2012-08-09 20 views
1

我在嘗試將6000000000存儲在int變量中時遇到問題。在java中60億不能被識別爲整數?

這是劇本,我有問題的一部分:

Scanner x = new Scanner(System.in); 
System.out.println("Please enter a number here:"); 
int k = x.nextInt(); 
System.out.println(k); 

當我輸入6000000000輸出應該是一樣的,但輸出是這樣的錯誤:

Exception in thread "main" java.util.InputMismatchException: For input string: "6000000000" 
    at java.util.Scanner.nextInt(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 

是什麼這個?如何防止這一點?

回答

8

該值太大,java int s只能保存從-2,147,483,648到2,147,483,647的值。

改爲使用long

+2

一旦'long'變得太短,使用'double' – 2012-08-09 15:33:43

+2

...一旦一倍變得太短使用' BigInteger' :-) – home 2012-08-09 15:38:18

+6

...一旦'BigInteger'變得太短,買更多的RAM – assylias 2012-08-09 15:39:14

0

Here您可以看到int的最大值爲2,147,483,647 = 2^31 - 1。嘗試long代替:

long k = x.nextLong(); 
System.out.println(k); 

long將帶你到9,223,372,036,854,775,807 = 2^63 - 1。一旦你需要超過這個值,你可以看看BigIntegerScanner#nextBigInteger())或者只是使用浮點數如doubleScanner#nextDouble())。

0

,或者如果您使用的是真正的大數字(比久大),然後使用nextBigInteger