坚持从内部循环if语句

时间:2016-11-10 17:52:54

标签: java loops if-statement

我目前正在做类似老虎机的项目。我遇到了需要循环IF语句的问题,但是只有当用户输入为YES时,才能在该循环中?这是我想要做的一些示例代码。

int num1 = 0;
int num2 = 0;
int num3 = 0;

Scanner scan = new Scanner(System.in);  
Random numRand = new Random();

num1 = numRand.nextInt((9 - 0) + 1);
num2 = numRand.nextInt((9 - 0) + 1);
num3 = numRand.nextInt((9 - 0) + 1);

System.out.println(num1 + " " + num2  + " " + num3);

if(num1 == num2 && num1 == num3 && num2 == num3) {
    System.out.println("All three match - jackpot");
    System.out.printf("Would you like to play again? ");
    String Yes = scan.nextLine();
    if(Yes.equals("y")) {

    }
    String No = scan.nextLine();
    if(No.equals("n")) {

    }
}
else if(num1 == num2 || num2 == num3 || num1 == num3) {
    System.out.println("Two number match");
    System.out.printf("Would you like to play again? ");
    String Yes = scan.nextLine();
    if(Yes.equals("y")) {

    }
    String No = scan.nextLine();
    if(No.equals("n")) {

    }
}
else {
    System.out.println("No numbers match");
}
scan.close();

从我的代码中,您可以看到在IF语句中,我正在尝试运行另一个if语句,当用户的输入= Y时(对于是)这样,如果用户要输入y在提示时,if语句将循环。

结果如下:如果所有3个数字匹配,则输出: 如果2个数字匹配,则输出: 如果没有数字匹配则输出:

我希望你明白

2 个答案:

答案 0 :(得分:1)

1。递归

有两种方法可以实现这一点,一种方法是通过recursion来处理它。例如。如果所有这些代码都存在于具有此签名的函数中

public static void main(String[] args)

您只需添加一个电话,例如

    if(Yes.equals("y")) {
        main(new String[0]); // String[0] is just to satisfy the arguments of the main function, if yours requires other arguments, put them there
    }

这样做的缺点是您的代码将创建扫描程序等。此外,在某些时候您会看到异常,因为您将耗尽堆栈。

2。 while循环

另一种选择是将所有代码放入while构造中并使用continue再次执行所有代码并break离开循环:

while (true) {
    // S: loop start
    num1 = numRand.nextInt((9 - 0) + 1);
    . . .
    if(Yes.equals("y")) {
        continue; // this will cause us to go to S 
    } else {
        break; // this will cause us to go to A
    }
}
// A: after loop

答案 1 :(得分:1)

我建议使用do while构造。

Scanner scan = new Scanner(System.in);  
Random numRand = new Random();

boolean keep_playing = true;

do
{
    num1 = numRand.nextInt((9 - 0) + 1);
    num2 = numRand.nextInt((9 - 0) + 1);
    num3 = numRand.nextInt((9 - 0) + 1);

    System.out.println(num1 + " " + num2  + " " + num3);

    if(num1 == num2 && num1 == num3) { // && num2 == num3  - unnecessary
        System.out.println("All three match - jackpot");
    }
    else if(num1 == num2 || num2 == num3 || num1 == num3) {
        System.out.println("Two number match");
    }
    else {
        System.out.println("No numbers match");
    }

    System.out.printf("Would you like to play again? ");

    String input = scan.nextLine();
    keep_playing = input.equals("y");

} while ( keep_playing )

scan.close();