我目前正在做类似老虎机的项目。我遇到了需要循环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个数字匹配,则输出: 如果没有数字匹配则输出:
我希望你明白
答案 0 :(得分: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
}
这样做的缺点是您的代码将创建扫描程序等。此外,在某些时候您会看到异常,因为您将耗尽堆栈。
另一种选择是将所有代码放入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();