java - 在java中获取用户输入的正整数

标签 java input

我必须编写一个程序,要求用户输入整数,但它们必须是正数。 我很确定我必须使用循环,并且不认为我可以使用 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/

相关文章:

java - Blackberry:更改 KeywordFilterField 的排序

javascript - 在 Node.js 中使用 readline

python - 如何在 Beautiful Soup 4 (Python) 中使用搜索栏

java - 输入键在 JTextArea 中不起作用

Java:jsplitpane 和 boxlayout 的问题

java - Android SQLite 搜索结果出错

java - org.hibernate.hql.ast.QuerySyntaxException 与 Hibernate

java - 在哪里下载 com.rackspacecloud.client.cloudfiles.* 包

html - html 输入元素的高度不同,计算错误

c - 在键盘输入时无限循环停止时执行 - C