我尝试做一个将小数转换为二进制的小程序。 我的程序适用于int< 1024.如果我输入1024或更高版本,我会收到此错误:
线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“10000000000” at java.lang.NumberFormatException.forInputString(Unknown Source) 在java.lang.Integer.parseInt(未知来源) 在java.lang.Integer.parseInt(未知来源) 在ConvertoBinary.binaryform(ConvertoBinary.java:35) 在ConvertoBinary.main(ConvertoBinary.java:20)
这是我的javacode:
import java.util.Scanner;
public class ConvertoBinary {
public static void main(String[] args) {
int number;
Scanner scanner = new Scanner(System.in);
System.out.println("Geben sie eine positive Dezimalzahl ein:");
System.out.print("Dezimal: ");
number=scanner.nextInt();
if (number <=0)
System.out.println("Error: Keine positive Dezimalzahl erkannt");
else {
System.out.print("Binär: ");
System.out.print(binaryform(number));
}
scanner.close();
}
public static int binaryform(int number) {
String rest = "";
while (number > 0) {
rest = number%2 + rest;
number = number/2;
}
number = Integer.parseInt(rest);
return number;
}
}
答案 0 :(得分:2)
您将返回int
超过Integer.MAX_VALUE
限制的结果。您应该返回结果String
而不是int
public static String binaryform(int number) {
String rest = "";
while (number > 0) {
rest = number%2 + rest;
number = number/2;
}
//number = Integer.parseInt(rest); Commented it
return rest;
}
答案 1 :(得分:0)
"10000000000"
,这个二进制形式太大而无法转换并适合int。整数可以是Integer.MAX_VALUE
的最大值,2147483647
。然而,Integer
类提供了一个有用的函数Integer.toBinaryString(int)
来将给定的整数转换为二进制字符串。