gpt4 book ai didi

java - 不断验证整数

转载 作者:行者123 更新时间:2023-12-02 05:44:39 24 4
gpt4 key购买 nike

我有一种方法用于验证程序中用户输入的值。每当用户将字符串输入 JOptionPane 时,我都会调用此方法并传入输入的字符串,以及我需要输入的最大值和最小值。首先,我通过尝试解析输入字符串并捕获异常来检查输入是否为整数,然后检查该整数是否在最小值和最大值之间。我的问题是,如果用户在提示后输入另一个不正确的非整数值,我不知道如何检查新值是否正确。方法如下,有人可以帮忙吗?

int checkInput(String input, int min, int max) {
Boolean isInteger = false;
Boolean inputAccepted = false;
int userInput = 0; //will be set later
while (!isInteger) {
try
{
userInput = Integer.parseInt(input);
}
catch (NumberFormatException e)
{
userInput = Integer.parseInt(JOptionPane.showInputDialog("Please enter only integers between " + min + " and "+ max + "."));
isInteger = true; //the problem here is that it assumes the user inputted a correct value after being prompted... what if they enter another incorrect value?
}
}
while (!inputAccepted) {
if (userInput < min || userInput > max)
{
userInput = Integer.parseInt(JOptionPane.showInputDialog("Please enter only integers between " + min + " and "+ max + "."));
}
else
{
inputAccepted = true;
}
}
return userInput;
}

最佳答案

我认为主要问题是您的方法的工作并不简单且定义明确。看起来您在这个方法之外有一个输入数字的语句;但是 checkInput 有两个任务:确保数字有效,并输入更多数字直到有效。这在两个方面是一个问题:执行输入的代码在两个地方重复,并且您的方法的职责不明确。

相反,尝试编写一个仅检查输入是否有效并返回 truefalse 的方法。我会将名称更改为 isValidInput。然后,调用者将有一个循环来执行输入,确保其有效,如果无效则返回。

通常我不会通过指出你的设计中的缺陷来回答这样的问题。但我认为在这种情况下,如果你重新思考你的设计,你的问题就会得到答案。 (当你正确设计事物时,通常会出现这种情况——事物各就各位。)

关于java - 不断验证整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209568/

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