繁体   English   中英

使用y / n重新启动Java中的游戏? [关闭]

[英]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时,会有谁知道重新启动游戏的简便方法? 任何帮助表示赞赏

我怀疑您的原始代码中发生了两件事:

  1. 您使用的是yn ,而不是"y""n" -前者在编译器中看起来像变量名,而后者是字符串文字,我想我们应该这样做。 如果您实际上是在说前者,我们需要声明一些名为yn变量作为字符串,并为它们提供一些值(分别为"y""n" ),尽管我认为不值得使用变量在这种情况下(假设它们仅在您的代码中被引用一次,没有复杂的表达式,并且没有可变性。

  2. 如果仅在比较字符串时使用==,则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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM