使用while循环循环回到语句的开头(java)

时间:2015-03-11 23:46:18

标签: java loops while-loop

我已经完成了使用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循环?

2 个答案:

答案 0 :(得分:0)

尝试这样做:

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关键字中断循环

答案 1 :(得分:0)

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

boolean validInput = false;

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