我想遍历并跳过所有小于或等于0或非整数的输入。
我已经编写了这段代码,但是它不起作用,我也不明白为什么。
while(!userInput.hasNextInt() || userInput.nextInt() <= 0) {
userInput.next();
}
return userInput.nextInt();
答案 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;
}