gpt4 book ai didi

java - 为什么 hasNextInt() 方法不适用于大整数?

转载 作者:行者123 更新时间:2023-11-29 04:20:44 26 4
gpt4 key购买 nike

我正在编写一个简单的程序,它从 Scanner 对象接收整数输入,确定它是否是回文,并返回 boolean 值。

对于大多数数字,它运行良好。但是,在这段代码中:

private static void programRunner() {
System.out.print("Insert your number:");
Scanner in = new Scanner(System.in);
if (in.hasNextInt()) {
int testNumber = in.nextInt();
boolean result = palindromeTester(testNumber);
System.out.println(result);
programRunner();
} else {
System.exit(0);
}
}

我添加了“System.exit(0)”表达式,使用户可以通过故意键入任何非整数值轻松终止程序。问题在于,当提供“相当大”的整数(例如“1234567654321”)时,代码会启动 System.exit(0),这意味着它不会被识别为整数?

我认为问题在于 hasNextInt 方法的“默认半径”,它可能限制了它识别的整数值的大小。 (该程序最多可运行 9 位整数)但我不确定。还是递归有问题?

最佳答案

因为 Java 中的 int32 位 并且只能将 2^31 - 1 (2147483647) 作为最大值(另请参阅Integer.MAX_VALUE)。

任何比它更大的都不是int,而是long(除非它比Long.MAX_VALUE 还要大,在这种情况下你需要获取 BigInteger 的值。)

参见 Integer.MAX_VALUE , Long.MAX_VALUE , Scanner.nextInteger() , Scanner.nextLong() , Scanner.nextBigInteger()BigInteger .

关于java - 为什么 hasNextInt() 方法不适用于大整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49349409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com