我想在比赛结束时被提示; 如果我想再玩一次。 并使用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();
答案 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建议的方法应该有效。