二进制十进制(java.lang.NumberFormatException)
我试着做一个小程序,把十进制转换成二进制。 我的程序在int<;上运行得很好;1024.如果键入1024或更高,则会出现以下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "10000000000" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at ConvertoBinary.binaryform(ConvertoBinary.java:35) at ConvertoBinary.main(ConvertoBinary.java:20)
这是我的Java代码:
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;
}
}
# 1 楼答案
"10000000000"
,此二进制形式太大,无法转换并适合整数。整数可以是Integer.MAX_VALUE
的最大值,即2147483647
。但是Integer
类提供了一个有用的函数^{# 2 楼答案
返回的结果
int
超过了Integer.MAX_VALUE
的限制。您应该返回结果String
,而不是int