【问题标题】:looping back to beginning of statement using while loop (java)使用while循环(java)循环回到语句的开头
【发布时间】:2015-03-11 23:46:18
【问题描述】:

我的任务是制作一个使用 while 循环从 9 到 16 输入的阶乘计算器。条件是,如果用户输入的输入不是 9 到 16 或 int,它应该从头开始循环并再次请求输入。

我的代码如下所示:

Scanner myScanner; 
int x = 1;
int factorial=1; 
int input;
myScanner = new Scanner(System.in);
System.out.println("put in an int and i will show you its factorial");
while (true) { 
        input = myScanner.nextInt();
        if (input<9 || input >16) {
                System.out.println("please enter a valid int"); 
        }
        else{
                break; 
        }
}
for (int i=input; i >0; i--) { 
        factorial *= i;
}

问题在于,这并没有真正使用 while 循环返回到代码的开头。我真的只是输入了一个多余的语句来使它成为一个while循环。

所以我想我的问题是,如果输入了错误的输入,我该如何创建一个返回循环开头的 while 循环?

【问题讨论】:

  • 当你输入一个无效的 int 时,这个 not 以什么方式回到循环的开头?您真正想要改变的行为是什么?
  • 嗯,我觉得我实际上并没有使用while循环来循环,只是为了把它放在那里而输入它。如果输入错误,我真正想要的是循环回到程序的开头,例如:'9.8'“请输入有效输入”“汽车”请输入有效输入“9”362880
  • 你看过我下面的回答了吗?它可以满足您的需求。

标签: java loops while-loop


【解决方案1】:

另一种方法是使用布尔值,例如

boolean validInput = false;

然后循环直到你有有效的输入。这样,当用户在另一个答案中输入 -1 时,您就不会尝试计算值

【讨论】:

    【解决方案2】:

    尝试这样做:

    Scanner myScanner; 
    int x = 1;
    int factorial=1; 
    int input = 0;
    myScanner = new Scanner(System.in);
    System.out.println("Put in an integer value between 9 and 16 and I will show you its factorial. Type -1 to exit.");
    
    while (input != -1) { 
        //Try block for handling invalid string inputs
        try {
            input = myScanner.nextInt();
        } catch (Exception e){
            input = 0;
        }
    
        if (input<9 || input >16) {
            System.out.println("please enter a valid int"); 
        }
        else {
            for (int i=input; i >0; i--) { 
                factorial *= i;
                //input = -1; //Optionally end here if that's how things are intended to function
            }    
            System.out.println(factorial);
        }
    }
    

    使用值 (0) 初始化输入。如果用户输入某个值(即 -1),则通知用户循环结束。在 else 块中移动你的 for 循环并将 while 条件设置为input != 1

    或者,如果您希望程序在用户提供有效值时结束,则在 else 块中,手动将输入值设置为 -1,或者使用 break 关键字跳出循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多