Java:两个'同时'环

时间:2015-02-23 20:44:20

标签: java loops

我制作了一个我遇到问题的计算器。我想要两个' Do While'循环:一个完全重新启动程序,另一个如果用户输入的不同于' 1,2,3或4'

你可以在顶部看到两个变量。

总结:我想要有两个循环。一个用于重新启动程序,另一个用于在错误之后重新启动以选择符号。

public static void main(String[] args) {
    double result = 0; // multiple variable , switch to choose
    int retryAfterErrorSign = -1;
    int retry = -1;


    System.out.println("Firt number: ");
    Scanner sc = new Scanner(System. in );
    double nbre1 = sc.nextDouble();

    System.out.println("Second number: ");
    double nbre2 = sc.nextDouble();

    System.out.println("1 : Addition");
    System.out.println("2 : Soustraction");
    System.out.println("3 : Multiplication");
    System.out.println("4 : Division");
    retry = sc.nextInt(); //Loop to rechoose number. 

    int sign = sc.nextInt();
    switch (sign) {

        case 1:
            if (sign == 1) result = nbre1 + nbre2;
            System.out.println("The result is " + result);
            break;
        case 2:
            if (sign == 2) result = nbre1 - nbre2;
            System.out.println("The result is " + result);
            break;
        case 3:
            if (sign == 3) result = nbre1 * nbre2;
            System.out.println("The result is " + result);
            break;
        case 4:
            if (sign == 4) result = nbre1 / nbre2;
            System.out.println("The result is " + result);
            break;
        default:
            if (sign != 1 && sign != 2 && sign != 3 && sign != 4) System.out.println("Error , number not recognize");
            System.out.println("Retry (0/1)");
            retryAfterErrorSign = sc.nextInt(); //loop to rechoose sign;
    }
}

3 个答案:

答案 0 :(得分:2)

你所谈论的通常被称为“游戏循环”。它基本上将整个应用程序包装在一个循环中,该循环检查是否存在某些终止条件,或者只是重新启动整个应用程序。在类似Java的伪代码中,结构可能如下所示:

bool keepPlaying = true;
while (keepPlaying) {
    // everything goes in here.
    // if the program should ever end, set keepPlaying to false.
}

那个循环中你将拥有你的“游戏逻辑”(在这种情况下,“游戏”只是一个计算器,但概念是相同的)。这个逻辑可能看起来像这样:

String input = getInputFromUser();
while (!isValid(input)) {
    input = getInputFromUser();
}
// perform the logic on the input

巧合的是,还有另一个循环,但它与驱动整个界面的总体“游戏循环”完全分开,并且未知。

这些逻辑抽象中的每一个都为从代码中提取方法提供了良好的界限。因此,您的整个main()方法可能只是“游戏循环”,并且该循环可能只有一个语句,playGame();或具有该性质的东西。然后 方法将包含应用程序逻辑,它在内部有一些循环,它们自己调用更多的抽象(例如getInputFromUser(););

答案 1 :(得分:1)

Do-While-Loop听起来像是来自BASIC。在Java中,写

while(condition) {

}

do {

} while(condition);

注意语义差异:第一个例子测试进入身体之前的条件;第二个例子在执行完身体后测试

答案 2 :(得分:0)

有一些方法,另一种方法是将您的代码放在while(true){... check for a specific condition if true {exit while}... }

while(true){
System.out.println("Firt number: ");
        Scanner sc = new Scanner(System.in);
        double nbre1 = sc.nextDouble();

        System.out.println("Second number: ");
        double nbre2 = sc.nextDouble();

        System.out.println("1 : Addition");
        System.out.println("2 : Soustraction");
        System.out.println("3 : Multiplication");
        System.out.println("4 : Division");
        retry = sc.nextInt();//Loop to rechoose
        if (retry !=1 && retry !=2 && retry !=3 && retry !=4 ){
           break;
        }
        //....code
}