Java扫描器-跳过所有“非整数”和“小于0”的输入

时间:2018-12-01 16:05:55

标签: java java.util.scanner

我想遍历并跳过所有小于或等于0或非整数的输入。

我已经编写了这段代码,但是它不起作用,我也不明白为什么。

while(!userInput.hasNextInt() || userInput.nextInt() <= 0) {
    userInput.next();
}
return userInput.nextInt();

2 个答案:

答案 0 :(得分:1)

我认为您需要稍微改变一下逻辑,例如:

while (userInput.hasNext()) {
    if (userInput.hasNextInt()) {
        int intValue = userInput.nextInt();
        if (intValue > 0) {
            return intValue;
         }
    }
    userInput.next();
}

因为当您尝试验证int值小于或等于零userInput.nextInt() <= 0时,实际上是在获取该值。 因此,如果不正确,您将转到此行return userInput.nextInt();,但是光标将已经在下一个值上。

答案 1 :(得分:0)

您可以检查是否有任何用户输入。如果有输入,然后进行处理,否则继续循环。

while(userInput.hasNextInt()){
       int a=userInput.nextInt();
       if(a>=0){
          return a; 
       }else
          continue;
 }