我如何实现再次播放功能?

时间:2016-10-02 23:36:29

标签: java loops methods

我想在比赛结束时被提示; 如果我想再玩一次。 并使用Y / N输入:退出游戏或重复它。

如何以最有效的方式解决这个问题?

编辑:说明资源路径位置类型 方法playAgain()未定义类型Main Main.java / ScaredyCat / src / se / gruppfisk / scaredycat / main line 12 Java问题

public boolean playAgain(Scanner keyboard) {
    try {
        System.out.print("Do you want to play again? (Y/N): ");
        String reply = keyboard.nextLine();
        return reply.equalsIgnoreCase("Y");
    } finally {
        keyboard.close();

2 个答案:

答案 0 :(得分:2)

在主方法中添加一个循环:

public static void main(String[] args) {
    do {
        ScaredyCat game = new ScaredyCat(new Player("Urkel",23),new Player("Steve", 18));
        game.play();
    } while(playAgain());
}

private static boolean playAgain() {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Play again? (Y/N): ");
    String replay = keyboard.nextLine();
    return replay.equals("Y");
}

答案 1 :(得分:0)

请注意,流或阅读器应该在相同的范围/模块中关闭,它是在创建的。在您的情况下,Scanner不应该在playAgain()内关闭,因为它是一个输入参数到API。

可以实现循环以检查用户是否想要再次播放。通常使用do-while循环,因为它会在检查条件之前运行一次。使用其他循环将需要一个默认为true的变量。

使用do-while的解决方案:

boolean playAgain = false;
do{
  Game game = new Game();
  game.play();      
  playAgain = ScaredyCat.playAgain();
}while(playAgain);

使用while的解决方案:

boolean playAgain = true;
while(playAgain){
  Game game = new Game();
  game.play();      
  playAgain = ScaredyCat.playAgain();
}

ScaredyCat.java

中添加以下内容
public static boolean playAgain() {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Play again? (Y/N): ");
    String replay = keyboard.nextLine();
    return replay.equals("Y");  //or equalsIgnoreCase
}

您在编辑部分中提到的异常表示playAgain()文件中没有Main.java方法。此外,如果您在main(String[])方法中使用此方法,则必须为static,如果non-static,则必须属于某个对象,并且必须通过对象引用进行调用。 nhouser9建议的方法应该有效。