我在获取二进制文件时遇到了麻烦。我不知道出了什么问题。二进制数总是以胡言乱语结束。还有一些部分,比如new int[31]的东西是来自HW的,但我无法打印出真正的二进制文件。
public class DectoBinary {
public static void main(String[]args) {
Scanner CONSOLE = new Scanner(System.in);
System.out.print("Please enter a nonnegative integer: ");
int value = CONSOLE.nextInt();
while (value < 0) {
System.out.print("number outside range.");
System.out.print
("Please enter a nonnegative interger more than 0: ");
value = CONSOLE.nextInt();
}
int[] intArray = new int[31];
decimalToBinary(value, intArray);
System.out.println(value + "" + intArray);
}
public static int[] decimalToBinary(int value, int[]intArray) {
int i = 0;
while (value != 0) {
if (value % 2 == 1)
intArray[i] = 1;
else
intArray[i] = 0;
value /= 2;
i++;
}
return intArray;
}
}发布于 2012-04-25 11:05:26
我认为错误在这一行上:
System.out.println(value + "" + intArray);您不能像这样打印整数数组:您应该将其转换为字符串,或者编写一个逐位打印数组的循环:
for (int i : inrArray) {
System.out.print(intArray[i]);
}
System.out.println();您也不需要传入输出数组:您可以在函数内部创建它。
public static int[] decimalToBinary(int value) {
int count = 1;
int tmp = value;
while (tmp != 0) {
tmp /= 2;
count++;
}
int[] intArray = new int[count];
// Do the conversion here...
return intArray;
}发布于 2012-04-25 11:05:15
您可以简单地使用Integer.toBinaryString(int)。
发布于 2012-04-25 11:41:27
实际上,这是使用BigInteger在java中获取二进制数的一种非常简单的方法。
public String dectoBin(int num){
String s = ""+num;
BigInteger bi = new BigInteger(s);
String bin = bi.toString(2);
return bin
}BigInteger.toString(2)返回存储在圆括号内指定的数字基数上的数字。是绕过这个问题的一个非常简单的方法。
https://stackoverflow.com/questions/10308769
复制相似问题