输入大小的问题,java noob

时间:2011-03-24 01:22:33

标签: java

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)

有谁知道为什么会这样?

3 个答案:

答案 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不正确则不要继续