1

当我尝试存储变量6000000000时遇到问题。int

这是我遇到问题的脚本的一部分:

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)

这是什么?如何防止这种情况?

4

4 回答 4

8

值太大,javaint只能保存–2,147,483,648到2,147,483,647之间的值。

改用 a long

于 2012-08-09T15:31:36.187 回答
1

使用longand nextLong,您的数字大于Integer.MAX_INT: 2^31 - 1

另请注意,如果您首先使用hasNextInt().

于 2012-08-09T15:32:04.347 回答
0

在这里您可以看到 的最大值int2,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. 一旦你需要超过它的值,你可以查看BigInteger( ) 或只使用像( )Scanner#nextBigInteger()这样的浮点数。doubleScanner#nextDouble()

于 2012-08-09T15:34:02.860 回答
0

或者如果您使用的是非常大的数字(大于 long),则使用 nextBigInteger

于 2012-08-09T15:39:01.540 回答