为int类型变量

时间:2017-10-05 17:03:57

标签: java

我是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.");
    }
}

2 个答案:

答案 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.");
  }
}