【问题标题】:Checking whether input is 5,10,15,20,25 or 30 in java在java中检查输入是5,10,15,20,25还是30
【发布时间】:2013-10-13 11:37:23
【问题描述】:

JAVA 代码:

我正在尝试检查有人输入 5、10、15、20、25 或 30 的时间。 这是一个抵押贷款计算,这是摊销期,但我还需要它来循环 和错误检查。如果该人输入的不是 5、10、15、20、25 或 30,则必须说:

“请输入 5、10、15、20、25 或 30。”

然后循环并再次等待输入。

我知道您可以检查每个 int 的 if 语句,但我不确定如何循环 这个声明。

【问题讨论】:

标签: java error-handling


【解决方案1】:

使用 do while 循环的完美候选者:

    int tries = 0;
    Scanner in = new Scanner(System.in);
    int x;
    do {
             tries ++;
             if ( tries < MAX_TRIES) {
            System.out.print("Please input either 5,10,15,20,25 or 30.");
            x = in.nextInt();
            System.out.println(); 


         } else {
              System.out.println("maybe you can't use a keyboard.");
              break;
        }
       }while ( ! (x%5 == 0 && x > 0 && x <=30);

基本上这只是说,继续阅读 x 直到条件为真。 x &gt; 0 &amp;&amp; x &lt;=30 给出 1 到 30 之间的数字,x%5 == 0 过滤掉不是 5 的倍数的数字

【讨论】:

  • 我不是Scanner 的专家,但我相信如果nextInt 失败(因为用户输入了一个非整数值),它会继续尝试从流中读取并将你进入无限循环...
【解决方案2】:
boolean test;
do {
    int x = input;//read input
    test = (x%5 == 0 && x > 0 && x <= 30);
    if(!test) {
        System.out.println("Please input either 5,10,15,20,25 or 30.");
    }
} while(!test);

输入可能是这样的:

sc.nextInt();

当您在System.in 上使用Scanner 时:

Scanner sc = new Scanner(System.in);//put this code somewhere before entering the do-while loop.

【讨论】:

  • 你不应该把答案转嫁给那些没有付出任何努力的人。
  • 我同意,但我不明白为什么这是对这个答案投反对票的理由:(。
  • 因为从长远来看你并没有真正帮助OP,你甚至没有给出任何解释。
  • 那么我们可以同意不同意。
  • 其实这不是意见分歧,redFIVE。你完全错了:“不要对真诚回答家庭作业问题的人投反对票。”在这里找到:meta.stackexchange.com/questions/10811/…
【解决方案3】:

如果x 是5 的倍数,if(x%5==0) 返回true

如果x 大于0,if(x&gt;0) 返回true

如果x 小于31,if(x&lt;31) 返回true

您可以将这些检查与&amp;&amp; 运算符结合使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2013-08-05
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多