[英]Restart game in java using y/n? [closed]
如何在Java中重新启动游戏?
这是我尝试过的,但是没有用:
String playagain;
String y="y";
String n="n";
//这里有大量的游戏代码
System.out.println("play another game?(y/n)");
playagain=input.next();
if(playagain==y){
Game.end();
Game.start();
}else if(playagain==n){
System.out.println("Goodbye");
}
游戏是该类的名称,但它坚持要求我为该类创建一种工作方法。 玩家单击y时,会有谁知道重新启动游戏的简便方法? 任何帮助表示赞赏
我怀疑您的原始代码中发生了两件事:
您使用的是y
和n
,而不是"y"
和"n"
-前者在编译器中看起来像变量名,而后者是字符串文字,我想我们应该这样做。 如果您实际上是在说前者,我们需要声明一些名为y
和n
变量作为字符串,并为它们提供一些值(分别为"y"
和"n"
),尽管我认为不值得使用变量在这种情况下(假设它们仅在您的代码中被引用一次,没有复杂的表达式,并且没有可变性。
如果仅在比较字符串时使用==,则Java实际上将检查字符串是否具有相同的引用(即它们是完全相同的实例,相同的对象)。 如果要检查字符串的内容,我们需要评估string1.equals(string2)
,如果它们具有相同的内容,则为true,否则为false。 在这里了解更多信息。
编辑:好的,问题比我最初想的要深。 考虑像这样而不是上面那样构造代码(如果您没有那些start和end方法):
while (true) {
// Play the game here
// Play again?
boolean isPlayingAgain = true;
while (true) {
System.out.println("play another game?(y/n)");
String playingAgainResponse = input.next();
if (playingAgainResponse.equalsIgnoreCase("y")) {
break;
} else if (playingAgainResponse.equalsIgnoreCase("n")) {
System.out.println("Goodbye");
isPlayingAgain = false;
break;
}
}
if (!isPlayingAgain) {
break;
}
}
因此,只有当我们不想再玩时,外部循环才会终止,否则我们将继续运行代码来玩游戏。 该内部循环可确保玩家输入“ y”或“ n”(实际上是大写或小写),因此可以处理玩家输入乱码的情况。
考虑到playagain
是一个String,您可以使用input.next();
从用户那里获得输入input.next();
,那么您应该编辑条件:
if(playagain.equalsIgnoreCase("y")){
Game.end();
Game.start();
}else if(playagain.equalsIgnoreCase("n")){
System.out.println("Goodbye");
}
如果n和y是包含字符串的变量,请执行以下操作
if(playagain.equalsIgnoreCase(y)){
Game.end();
Game.start();
}else if(playagain.equalsIgnoreCase(n)){
System.out.println("Goodbye");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.