【问题标题】:Restart game in java using y/n? [closed]使用y/n在java中重启游戏? [关闭]
【发布时间】:2015-10-02 18:24:01
【问题描述】:

如何在 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");
    }

game 是类的名称,但它坚持我创建一个方法来让它工作。 有没有人知道当玩家点击 y 时更简单的重启游戏的方法? 任何帮助表示赞赏

【问题讨论】:

  • 哦,哈哈 ==y?你的意思是 playagain.equals("y") 和 .equals("n")
  • 您的问题中确实应该包含更多信息。 Game 是否有静态方法 endstart?他们做你想让他们做的事吗?确实,不要将字符串与== 进行比较,我真的怀疑您是否有名为yn 的变量无论如何对这种比较有意义。
  • 是的,我有 y 和 n 的变量
  • 只是提醒一下,我认为否决票是因为我们没有看到您得到的确切编译器错误。也不要只是说有些事情没有奏效;说明发生了什么,以及预期会发生什么。不过,很高兴分享您的尝试!
  • @ya wang 程序中有字符串y和n,分别等于“y”和“n”

标签: java restart application-restart alternate


【解决方案1】:

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

    1234563 '在之后。如果您实际上是指前者,我们需要将一些名为 yn 的变量声明为字符串,给它们一些值(可能分别为 "y""n"),虽然我不认为在这种情况下,值得使用变量(因为它们只会在您的代码中被引用一次,没有复杂的表达式,也不是可变的。
  1. 如果在比较字符串时仅使用 ==,Java 将实际检查字符串是否具有相同的引用(即它们是完全相同的实例、相同的对象)。如果要检查字符串的内容,我们需要评估string1.equals(string2),如果它们具有相同的内容,则为真,否则为假。更多信息here

编辑:好的,问题比我最初想象的要深。考虑像这样构造你的代码而不是上面的(如果你没有那些 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”(实际上是大写或小写),因此它正在处理玩家输入一些乱码的情况。

【讨论】:

  • 字符串 y="y" 和字符串 n="n"
  • 是的,但是 == 会检查参考,正如 Luke 已经说过的,ie they're the exact same instance, the same object。只需使用playagain.equals(y)
  • 我不确定在这里使用变量是否有任何意义?也许只是使用playagain.equals("y")等。小风格的笔记,太; Java 约定可能更喜欢变量名playAgain(注意小写驼峰式)。
  • @Luke 好的我已经编辑了我的代码,你建议我用什么来代替 Game.start(),因为我的代码中实际上没有这样的工作方法
  • 根据这个新信息编辑了我的回复 :)
【解决方案2】:

考虑到playagain 是一个字符串,并且您从用户那里获得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");
}

【讨论】:

    猜你喜欢
    • 2014-08-10
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2010-09-09
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多