2011-03-24 52 views
0
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個位數的任何開關輸入會引發錯誤:與投入的大小,JAVA小白

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

謝謝大家,你們的幫助是無價的,但問題現在已經得到解決。懇求反應速度如何快樂 – sam 2011-03-24 01:31:59

+2

如果您的問題已得到解決** upvote **有幫助的答案**點擊旁邊的向上箭頭**,**接受**最好解決您的問題的答案**通過點擊旁邊的複選標記**。 – 2011-03-24 01:33:22

+0

請點擊最佳答案旁邊的綠色複選標記。 – Jonah 2011-03-24 01:33:24

回答

3

int可以在下列範圍內舉行的數字:

-2,147,483,648到+2,147,483,647

用戶long代替int和使用scan.nextLong();得到輸入。

4

而不是int和Integer使用long和long。詮釋僅上升至2,147,483,647

更新: 你的代碼看一次,你爲什麼要在整數蒲凌,當你使用它作爲一個字符串。

對每個字符使用char,如果輸入非數字,則輸出錯誤。這樣他們就可以隨意輸入數字。

2

即使您使用Long,您仍然可以輸入一個太長的數字。這樣做:

int x; 
boolean isNumberGood = false; 
try { 
    x = Scanner.nextInt(); 
    isNumberGood = true; 
} catch (java.util.InputMismatchException ex) { 
    System.out.println("bad number!"); 
} 

不要繼續,如果isNumberGood是不是真的