gpt4 book ai didi

java - 防止用户输入大于 int max 的值?

转载 作者:行者123 更新时间:2023-12-02 08:48:36 25 4
gpt4 key购买 nike

我有一些很酷的代码,它采用 int 值。我让弟弟测试一下,他做的第一件事是什么?他输入:

12345678910

他得到了这个错误:

User did not input a number. (Error Code 1)

嗯,这不是真的。有没有办法给他一个“值太大”的不同错误?这是我的代码:

try
{
number = input.nextInt();
}
catch (InputMismatchException e)
{
System.err.println("User did not input a number. (Error Code 1)");
System.exit(1);
}

谢谢!

编辑

我使用的发布的代码已被修改。这是我最终使用的代码,但解决方案不再在注释中。

        try 
{
double intitalinput = input.nextDouble();

if (intitalinput > Integer.MAX_VALUE)
{
System.err.println("User entered a number larger than " + Integer.MAX_VALUE + ". (Error Code 2)");
System.exit(2);
}
else
{
number = (int) intitalinput;
}
}
catch (InputMismatchException e)
{
System.err.println("User did not input a number. (Error Code 1)");
System.exit(1);
}

感谢Jay Harris解决了我的问题!

编辑第二个

我添加了“小于零”检查。如果其他人偶然发现这个问题并需要类似的帮助,我将在此处显示更新的代码:

try 
{
double intitalinput = input.nextDouble();

if (intitalinput > Integer.MAX_VALUE)
{
System.err.println("User entered a number larger than " + Integer.MAX_VALUE + ". (Error Code 2)");
System.exit(2);
}
else if (intitalinput < 0)
{
System.err.println("User entered a number smaller than 0. (Error Code 3)");
System.exit(3);
}
else
{
number = (int) intitalinput;
}
}
catch (InputMismatchException e)
{
System.err.println("User did not input a number. (Error Code 1)");
System.exit(1);
}

最佳答案

有很多方法可以实现这一点,例如检查是否有更大的数字,并使用 Integer.MAX_VALUEInteger 的最大和最小大小来验证它Integer.MIN_VALUE

// long userInput = input.nextLong()
// or
double userInput = input.nextDouble();

// expecting an integer but user put a value larger than integer
if (userInput > Integer.MAX_VALUE || userInput < Integer.MIN_VALUE) {
// Throw your error
} else {
// continue your code the number is an int
number = (int) userInput;
}

关于java - 防止用户输入大于 int max 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31444075/

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