我试着做一个小程序,把十进制转换成二进制。我的程序在int < 1024中运行得很好。如果输入1024或更高版本,则会出现以下错误:
线程“主”java.lang.NumberFormatException.forInputString(Unknown中的异常:用于输入字符串:"10000000000“在ConvertoBinary.binaryform(ConvertoBinary.java:35) at ConvertoBinary.main(ConvertoBinary.java:20)时位于java.lang.Integer.parseInt(未知源)在java.lang.Integer.parseInt(未知源)处
这是我的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;
}
}
发布于 2013-11-18 14:00:11
您正在使用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;
}
发布于 2013-11-18 14:01:11
"10000000000"
,此二进制格式太大,无法转换并适合于int。整数可以是Integer.MAX_VALUE
的最大值,即2147483647
。但是,Integer
类提供了一个有用的函数Integer.toBinaryString(int)
,可以将给定的整数转换为二进制字符串。
https://stackoverflow.com/questions/20049502
复制相似问题