我是Java新手,我一直在寻找2天如何实现这一目标,但仍然没有想到它。在我的if语句中,我需要确保如果用户只是输入一个值而不输入值,则消息将提示重新输入,如果用户输入的值小于1.下面是我的代码片段。 我已经读过除了null之外的int,我已经尝试过Integer,但是我的代码不能用那个
运行int numberOfCars = -1
while (numberOfCars == null || numberOfCars < 1)
{
numberOfCars = (JOptionPane.showInputDialog("Enter number of cars."));
if(numberOfCars == null || numberOfCars < 1)
{
JOptionPane.showMessageDialog(null, "Please enter a value.");
}
}
答案 0 :(得分:1)
int numberOfCars = -1;
do {
String answer = JOptionPane.showInputDialog("Enter number of cars.");
if (answer != null && answer.matches("-?[0-9]+")) {
numberOfCars = Integer.parseInt(answer);
if (numberOfCars < 1) {
JOptionPane.showMessageDialog(null, "Value must be larger than 1.");
}
} else {
JOptionPane.showMessageDialog(null, "Value not a number.");
}
} while (numberOfCars < 1);
这会进行验证(matches
),否则parseInt
会抛出NumberFormatException
。
正则表达式String.matches(String)
.matches("-?[0-9]+")
这匹配模式:
-?
=一个减号,可选(?
)[0-9]+
=来自[ ... ]
的字符,其中0-9是范围,数字,以及一次或多次(+
)有关正则表达式的信息,请参阅Pattern。
Integer.parseInt(string)
从字符串中获取int
值。像这样划分为零
可以引发错误,NumberFormatException。
这里有一个do-while循环(它很少)。正常的while循环也可以。
答案 1 :(得分:1)
JOptionPane.showInputDialog()
会返回String
。当您尝试使用try-catch
将其解析为int
时,您可以使用Integer.parseInt()
语句检查输入值是否正确。这适用于所有情况。
所以这可行:
int numberOfCars = -1;
while(numberOfCars < 1){
try{
numberOfCars = JOptionPane.showInputDialog("Enter number of cars.");
if(numberOfCars < 1){
JOptionPane.showMessageDialog(null, "Please enter a value.");
}
}catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, "Please enter numeric value.");
}
}