import java.lang.StringBuffer;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
Scanner scan = new Scanner(System.in);
System.out.print("Enter number to be reversed: ");
int x = scan.nextInt();
Integer number = new Integer(x);
String reverse = new String();
for(int i = 0; i <= number.toString().length()-1; i++) {
reverse = new StringBuffer(reverse).insert(i, number.toString().charAt(number.toString().length()-(1+i))).toString();
}
System.out.println(reverse);
}
}
我有这个代码,问题是任何超过9位数的输入都会引发错误:
Exception in thread "main" java.util.InputMismatchException: For input string: "4444444444"
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at test.main(test.java:9)
有谁知道为什么会这样?
答案 0 :(得分:4)
而不是int和Integer使用long和Long。 int只能达到2,147,483,647
<强>更新强> 再看一下你的代码,当你把它作为一个字符串使用时,为什么还要用int。
对每个字符使用char,如果输入非数字,则输出错误。通过这种方式,他们可以输入任意数量的数字。
答案 1 :(得分:3)
int
可以包含以下范围内的数字:
-2,147,483,648至+2,147,483,647
用户long
代替int
并使用scan.nextLong();
获取输入。
答案 2 :(得分:2)
即使你使用Long,你仍然可以输入一个太长的数字。这样做:
int x;
boolean isNumberGood = false;
try {
x = Scanner.nextInt();
isNumberGood = true;
} catch (java.util.InputMismatchException ex) {
System.out.println("bad number!");
}
如果isNumberGood不正确则不要继续