重复此循环的最佳方法是什么?

时间:2014-12-10 19:20:03

标签: java

我是新手,也是新手。老虎机代码工作正常。我希望以下代码执行以下操作: 当被问及(Play again? (Y/N?))时,如果我通过说Y回复游戏重启。如果我回答说N,程序就会终止。最后,如果我通过按任何其他内容做出回应,例如R,邮件重复(Play again? (Y/N?))。我正在考虑做一个循环,但不确定哪些元素去哪里。谢谢!

import java.util.Random;
import java.util.Scanner;

public class SlotMachine {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int slotOne;
    int slotTwo;
    int slotThree;
    String userResponse;

        Random randomNumbers = new Random();

        slotOne = randomNumbers.nextInt(10);  // Random number between 0 and 9
        slotTwo= randomNumbers.nextInt(10);  
        slotThree = randomNumbers.nextInt(10);  


        System.out.println(slotOne + " " + slotTwo +  " " + slotThree + " " );  // prints all three slot numbers next to each other
        if (slotOne != slotTwo && slotOne != slotThree && slotTwo != slotThree) // ! means does not equal
        { 
            System.out.println("No numbers match");  
        }
        else if (slotOne == slotTwo && slotOne == slotThree) 
        { 
            System.out.println("All three match - jackpot"); 
        } 
        else
        { 
            System.out.println("Two numbers match"); 
        }       

        System.out.print("Play again? (Y/N?)");
        userResponse = scan.next();

更新

它的第二个循环迫使它关闭?

5 个答案:

答案 0 :(得分:0)

userResponse = "Y";
While(userResponse.equals("Y")){
     Random randomNumbers = new Random();
     slotOne = randomNumbers.nextInt(10);  // Random number between 0 and 9
     slotTwo= randomNumbers.nextInt(10);  
     slotThree = randomNumbers.nextInt(10);
     System.out.println(slotOne + " " + slotTwo +  " " + slotThree + " " ); 
     if (slotOne != slotTwo && slotOne != slotThree && slotTwo != slotThree) 
     { 
       System.out.println("No numbers match");  
     }
     else if (slotOne == slotTwo && slotOne == slotThree) 
     { 
       System.out.println("All three match - jackpot"); 
     }else
     { 
            System.out.println("Two numbers match"); 
     }       

     System.out.print("Play again? (Y/N?)");
     userResponse = scan.next();
}

答案 1 :(得分:0)

使用开关或简单的if语句

例如

if(input.equals("Y")){
//your code
}  

if(input.equals("N")){
//your code
}  

else{
//your code
}

答案 2 :(得分:0)

你所描述的通常被称为“游戏循环”。基本上整个游戏的逻辑被包裹在循环中,该循环检查游戏的任何终止条件。在这种情况下,玩家说他们不想再玩。它可能看起来像这样:

boolean playGame = true;
while (playGame) {
    Scanner scan = new Scanner(System.in);
    int slotOne;
    int slotTwo;
    // and so on...

    // then after the game...
    while (!(userResponse.equals("Y") || userResponse.equals("N"))) {
        System.out.print("Play again? (Y/N?)");
        userResponse = scan.next();

        if (userResponse.equals("N")) {
            playGame = false;
        }
    }

}

这个特定的实现无疑是有点匆忙,但你明白了。总体情况决定了游戏是否仍然可玩。如果不是,则游戏循环结束。在内部,你还可以有一个用户输入循环,以便在收到任何无效输入时保持提示。对于简单的游戏,您甚至可以将这两者结合起来,在游戏循环之外声明userResponse,将其初始化为"Y",并执行while (userResponse.Equals("Y"))之类的操作。这在语义上将两个概念结合在一起,因此对于较大的游戏,如果除了更清晰的变量名和条件语句之外没有其他原因,你需要将循环条件与用户输入分开。

您可能还会找到其他原因来打破游戏,在这种情况下,您可以使用类似continue语句的内容在更新playGame值后重复循环循环,在游戏完成之前重置或退出游戏。

答案 3 :(得分:0)

让我们看看发生了什么

你知道自己需要循环

其中有3个

  

<强> 1 即可。 for loop

     

<强> 2 即可。 while循环

     

第3 即可。做while while循环

所有这些之间的

你需要做的循环

为什么?

因为您希望您的用户至少完成一次该过程。

让我们来看看do while循环的定义

<强>语法: do ... while循环的语法是:

do
{
   //Statements
}while(Boolean_expression);
  

请注意,布尔表达式出现在循环的末尾,所以   循环中的语句在测试布尔值之前执行一次。

     

如果布尔表达式为true,则控制流会跳回   要做,循环中的语句再次执行。这个过程   重复,直到布尔表达式为假。

例如:

代码:

    String answer = "Y";
    do {
        System.out.println("enter number 0 number plz");
        Scanner sc = new Scanner(System.in);
        int input = Integer.parseInt(sc.next());

        System.out.println("would you like to repeate again?");
        answer = sc.next();

    } while (answer.equalsIgnoreCase("Y"));

输出:

enter image description here

如果您要检查输入是否是您要查找的输入,可以按照此示例

代码:

    String answer = "Y";
    do {
        System.out.println("enter number 0 number plz:");
        Scanner sc = new Scanner(System.in);
        int input = Integer.parseInt(sc.next());
        if (input != 0) {
            System.out.println("your entered number is not zero");
            System.out.println("please try again");

        } else {
            System.out.println("would you like to repeate again?");
            answer = sc.next();
        }

    } while (answer.equalsIgnoreCase("Y"));

输出:

enter image description here

答案 4 :(得分:0)

do循环是一种合理的解决方案。但是你实际上需要两个循环才能完成你所要求的。一个检查响应是否有效(“Y”或“N”)和另一个检查响应是否为“Y”。所以它可能看起来像这样:

do {

    ...

    do {
        System.out.print("Play again? (Y/N?)");
        userResponse = scan.next();
    } while (userResponse.equals("Y") || userResponse.equals("N"));
} while (userResponse.equals("Y"));