[英]Java decimal to binary error in conversion
我现在正在做一个数字系统代码,并且在我的 decimalToBinary 上,每当我输入一个十进制数时,它总是将它转换为 1,无论它是什么十进制数。 代码在这里。
public static void decimalToBinary() {
do {
System.out.println("Enter your decimal number");
numDecimal = input.nextInt();
if (numDecimal < 0) {
System.out.println("Enter a valid number!");
}
} while (numDecimal < 0);
int intNum = Integer.valueOf(numDecimal);
int counter = 0;
binaryVal[counter++] = intNum % 2;
intNum = intNum/2;
for (int i = counter-1; i >= 0; i--) {
System.out.println("Your binary number is " + binaryVal[i]);
}
}
我建议您通过以下代码段更改代码,您还需要考虑创建具有足够维度的binaryVal
数组,以保存将要生成二进制转换的完整数字。
do {
binaryVal[counter++] = intNum % 2;
intNum = intNum / 2;
} while (intNum > 0);
for (int i = counter - 1; i >= 0; i--) {
System.out.print(binaryVal[i]);
}
如果您正在学习编程,您可以执行以下操作
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int intNum;
while ((intNum = scanner.nextInt()) > 0) {
decimalToBinary(intNum);
System.out.println();
}
}
public static void decimalToBinary(int intNum) {
int counter = 0;
int[] binary = new int[31];
while (intNum > 0) {
binary[counter++] = intNum % 2;
intNum = intNum / 2;
}
for (int i = counter - 1; i >= 0; i--) {
System.out.print(binary[i]);
}
}
}
当然还有更优化的解决方案。 但如果出于其他目的,你可以简单地做
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int intNum;
while ((intNum = scanner.nextInt()) > 0) {
String binary = Integer.toBinaryString(intNum);
System.out.println(binary);
}
}
您在进行转换时错过了一个循环。 下面是工作代码
public static void decimalToBinary() {
int numDecimal = 0;
Scanner input = new Scanner(System.in);
int[] binaryVal = new int[100];
do {
System.out.println("Enter your decimal number");
numDecimal = input.nextInt();
if (numDecimal < 0) {
System.out.println("Enter a valid number!");
}
} while (numDecimal < 0);
int intNum = Integer.valueOf(numDecimal);
int counter = 0;
while(intNum >0){
binaryVal[counter++] = intNum % 2;
intNum = intNum/2;
}
System.out.println("Your binary number is :");
for (int i = counter-1; i >= 0; i--) {
System.out.print("" + binaryVal[i]);
}
input.close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.