Java执行循环重复,直到有效输入

时间:2017-10-27 06:39:51

标签: java do-while

我使用do-while循环创建一个Java项目,以便在5到15之间从用户那里获取一个数字。之后,我将使用用户输入的数字创建一个正方形和三角形。

我目前仍然坚持让我的问题重复。运行程序后,它运行正常,直到我第二次输入一个数字,提示用户输入一个数字。如果号码无效,它将不会打印。

我尝试移动第二个"在do-loop中输入一个数字......" 但是只打印了"抱歉,无效" 提示。我在while循环中用case语句做了类似的事情,它运行正常,但我对do循环有困难。

有人能指出我正确的方向吗?

import java.util.Scanner;
public class doLoop {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner input = new Scanner(System.in);

    int number;
    int minimum = 5;
    int maximum = 15;

    System.out.print("Enter a number between " + minimum + " and " + maximum + ":" );



        do {
            number = input.nextInt();
            if (number >= minimum && number <= 15) 
                break;
            else 
                System.out.print("Sorry, invalid");
            break;
        } while (false); 
        System.out.print("\nEnter a number between " + minimum + " and " + maximum + ":" );
        number =  input.nextInt();
    }
}

2 个答案:

答案 0 :(得分:0)

通常,在while循环中使用break被认为是一种不好的做法。你应该有这样的东西

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    int number;
    int minimum = 5;
    int maximum = 15;

    do{
        System.out.print("Enter a number between" + " " + minimum + " " + "and" + " " + maximum + ":" );
        number = input.nextInt();
        if (number < minimum || number > maximum) 
            System.out.print("Sorry, invalid");
    } while (number < minimum || number > maximum); 

}

答案 1 :(得分:0)

您的代码中的中断和扫描仪输入位置存在逻辑错误。如果你真的想要坚持自己拥有的东西,我发现只需添加一个布尔检查而不是使用中断就更简单了。下面你可以看到我也是这样你知道的最终实践,并且这个变量不应该在代码中被改变或篡改。我添加了一个布尔值,因为你想检查do while为false,然后我们将它设置为true,如果它传递你所做的if语句。

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int number;
boolean check = false;

// Final, because they are constant through-out the program
final int minimum = 5;
final int maximum = 15;

do {
    System.out.print("Enter a number between " + minimum + " and " + maximum + ":" );
    number = input.nextInt();
    if (number >= minimum && number <= maximum) 
        check = true;
    else 
        System.out.println("Sorry, invalid");
    break;
} while (check); 


}