我必须编写一个程序,要求用户输入整数,但它们必须是正数。 我很确定我必须使用循环,并且不认为我可以使用 Math.abs()。
不过我现在写的东西看起来很困惑。这是代码:
public class Q1{
public static void main(String[] args){
int num1, num2, num3;
while(true){
System.out.println("Input first integer.");
num1 = TextIO.getInt();
if(num1 > 0)
break;
System.out.println("Integer isn't positive. Try again");
}
while(true){
System.out.println("Input second integer.");
num2 = TextIO.getInt();
if(num2 > 0)
break;
System.out.println("Integer isn't positive. Try again");
}
while(true){
System.out.println("Input third integer.");
num3 = TextIO.getInt();
if(num3 > 0)
break;
System.out.println("Integer isn't positive. Try again");
}
....
}
}
我基本上只是为每个整数执行单独的 while 循环来测试该整数是否为正数,因为当我使用一个循环时,我无法让它正常运行。有没有一种方法只使用一个循环仍然可以工作但看起来更整洁?
最佳答案
您可以将该循环移到另一个方法中:
public int readPositiveInt() {
int num = 0;
int attempt = 0;
int maxAttempt = 3;
// Allow only maxAttempt to enter correct input.
while(true && attempt < maxAttempt) {
num = TextIO.getInt();
if(num > 0)
break;
System.out.println("Integer isn't positive. Try again");
++attempt;
}
return num;
}
然后在当前有循环的地方调用此方法。
确保 TextIO
,无论它是什么,都可用于此方法。
此外,您应该更好地强制执行最大尝试次数,因为如果用户继续输入负数,您可能会进入无限循环。
关于java - 在java中获取用户输入的正整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003206/