追加时返回 null 的字符串

2023-12-03

我的任务是创建一个猜词游戏。您只有 5 次尝试猜测该单词的机会。用户一次输入一个字母,试图找出我的秘密单词“果汁”,但您应该使用提示单词构造,每次猜测都会用正确的字母替换星号(如果正确)。

输出应该是这样的:

欢迎来到猜词游戏!您有 5 次机会尝试猜出这个秘密单词! 目前的提示是


猜一个小写字母

u

*u***

猜猜秘密词

tutre

继续尝试!

猜一个小写字母

t

*u***

猜猜秘密词

mutor

继续尝试!

...继续直到 5 次尝试,然后你要么赢要么输

我的输出不会一直让您尝试猜测,而且提示词显然很混乱,因为它的 5 个星号前面有空。我不知道如何修复它。

目前的提示是

无效的*****

猜一个小写字母

j

jull*

猜猜秘密词

jutre

继续尝试!

游戏结束!再试一次?

这是我的班级:

public class SecretWord {
private String secretWord;
private String hintWord;
private int numberOfTurns;

//Default Constructors
public SecretWord()
{
    this.secretWord = "juice";
    for (int i = 0; i < secretWord.length(); i++)
    {
        this.hintWord+="*";
    }
    this.numberOfTurns = 0;
}
//Accessors
public String getSecretWord()
{
    return this.secretWord;
}
public String getHintWord()
{
    return this.hintWord;
}
public int getNumberOfTurns()
{
    return this.numberOfTurns;
}
//Mutators
public void setSecretWord ()
{
    this.secretWord = "juice";
}
public void setHintWord ()
{
    char[] correctLetters = new char[secretWord.length()];
    for (int i = 0; i<secretWord.length();i++)
    {
        hintWord+="*";
        correctLetters[i] += '*';
    }
}
public void setNumberOfTurns (int i)
{
    this.numberOfTurns = 5;
}
//Methods
public void guessLetter(char guess)
{
    String tempHintWord="";
    for (int i = 0; i < secretWord.length(); i++)
    {
        if (secretWord.charAt(i) == guess)
        {
            tempHintWord += guess;
        }
        else
        {
            tempHintWord += hintWord.charAt(i);
        }
    }
    hintWord = tempHintWord;
}

这是我的驱动程序类:

public class SecretWordGame {

//Constant for number of tries
public static final int NUM_TRIES = 5;

public static void main (String[] args)
{
    Scanner keyboard = new Scanner(System.in);

    //Starts game
    boolean quit = false;
    while (quit == false)

    {
        System.out.println("Welcome to the word guessing game! You have " +
                +NUM_TRIES+" tries to guess the secret word!");

                SecretWord myWord = new SecretWord();
        System.out.println("The current hint is \n"+myWord.getHintWord());

        while (myWord.getNumberOfTurns() <NUM_TRIES)
        {
            System.out.println("Guess a lowercase letter");

            //Gets the first letter of what is entered

            char guess = keyboard.nextLine().charAt(0);

            //Updates the hint by calling guess letter method

            myWord.guessLetter(guess);

            System.out.println(myWord.getHintWord());

            System.out.println("Guess the secret word");

            String myGuess = keyboard.nextLine();
            //Checks correct guess
            if (myGuess.equals(myWord.getSecretWord()))
            {
                System.out.println("You win!");
                break;
            }
            else
            {
                System.out.println("Keep trying!");
            }

            myWord.setNumberOfTurns(myWord.getNumberOfTurns()+1);
        }
        //Prompts user to play again

        System.out.println("Game over! Try again?");

        String userInput = keyboard.nextLine();
        if(userInput.equalsIgnoreCase("no"))
        {
            quit = true;
        }
        else
        {
            System.out.println("Let's go again!");
        }
    }
    System.out.println("Goodbye!");
}

SecretWord's hintword被初始化为null默认情况下。所以当你附加它时+= "*"它将当前值转换为"null"然后添加"*"。如果您在声明它的地方初始化hinword""它将解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

追加时返回 null 的字符串 的相关文章

随机推荐

  • 如何在 WCF 服务方法调用之间保留值?

    我有这个 WCF 服务类 public partial class OhmioSVC IOhmioSVC Security Porque no funciona si la variable no es estatica private s
  • nokogiri 可以在保存 xml 时对属性使用单引号吗?

    Nokogiri 使用双引号保存 XML 属性 即使它读取的 DOM 有单引号 这当然是完全合法的 但即使 DOM 没有改变 它也会对文件内容带来烦人的变化 使得 diff 和 git 等工具更难弄清楚发生了什么 我可以强制它使用单引号 或
  • 更改 Bootstrap 弹出窗口的宽度

    我正在使用 Bootstrap 3 设计一个页面 我正在尝试使用弹出窗口placement right在输入元素上 新的 Bootstrap 确保如果您使用form control您基本上有一个全角输入元素 HTML 代码看起来像这样 di
  • 如何挂钩页面范围内的点击事件?

    正如问题所述 我想在每次用户单击网页时触发一个调用方法的事件 在不使用 jQuery 的情况下如何做到这一点 如果不使用 jQuery 我想你可以这样做 if document addEventListener document addEv
  • Python 矩阵邻居检查

    我有一个包含 0 和 1 的 7 7 矩阵 其中每个 x y 将检查其邻居中有多少个是 1 我是 python 的初学者 只会使用基本的编程过程 I have for x in range rows for y in range cols
  • 如何从一个页面获取输入并将其发送到 django 中的另一个页面

    我对此还很陌生 我正在尝试根据用户要求在 iframe 中构建一个报告页面 用户可以使用 src 宽度和高度创建报告 并且我成功完成了此操作 我现在能够创建报告 我想要这个创建的报告名称将显示在下拉菜单中 当用户单击报告名称时 用户可以看到
  • 在 Struts 2 中动态生成名称和值属性

    我正在将代码从 Struts1 迁移到 Struts2 Struts1代码
  • fork之后,全局变量是否共享?

    考虑这个简单的代码 int myvar 0 int main if fork gt 0 myvar else father do nothing 当子进程增加 myvar 时 该值是否与父进程共享 如 pthread 不 又是 不 它们不会
  • WPF 图像:.Source = Clipboard.GetImage() 未显示

    这个简单的程序不起作用 图像没有出现在窗口中 namespace ClipBoardTest public partial class MainWindow Window public MainWindow InitializeCompon
  • 如何创建带有数据字段的 Java 类

    我正在上一门编程课 该课为我提供了一个项目 但我不知道从哪里开始 希望有人能把我推向正确的方向 我只发布该项目的一部分 以便有人可以向我展示一些代码 以了解它是如何完成的 因为我之前参加过编程课程 但我缺乏实践 创建一个名为 Registr
  • 如何通过javascript设置没有id的textarea的值?

    通常我们运行 javascript 代码来设置任何值 document getElementById id name value 但我有一个这样的页面 div div class class name div div
  • 是否可以在多选下拉列表中设置限制?

    我在我的网站中使用了多项选择下拉列表 这工作正常 我们可以从该列表中选择多个选项 但我只想从该列表中选择 3 个选项 是否可以为此设置限制 我正在使用来自的代码http www aleixcortadellas com main 2009
  • Git 命令显示 .gitignore 忽略了哪些特定文件

    我正在接触 Git 并遇到以下问题 我的项目源树 src refs vendor 我的供应商分支中有代码 当前为 MEF 我将在那里进行编译 然后将引用移至 src refs这就是项目从中获取它们的地方 我的问题是我有我的 gitignor
  • 如何使用jquery获取输入是否具有焦点[重复]

    这个问题在这里已经有答案了 如何使用jquery获取html的输入标签是否具有焦点 如果输入 图像等标签具有焦点 则 keydown 事件将适用于表单 但它不会工作 它的重点是形式 而不是任何标签 如输入 图像等 我该如何解决这个问题 请帮
  • 将 BCD 转换为二进制的最有效方法

    我有下面的代码将 32 位 BCD 值 以两个 uint 半部分提供 转换为 uint 二进制值 提供的值最大可达 0x9999 形成最大值 0x99999999 有没有更好 即更快 的方法来实现这一目标
  • for line in File 是否读取整个文件

    以下代码是为每个循环读取一行 还是在开始迭代之前先将整个文件读入内存 for line in f print line 我的目的是从文件中读取一行 你无法确定 你所能知道的就是它会return一次一行 这Python 标准库文档 says
  • 将多行连接成一行

    我现在正在学习SQL on SQL Server 我需要将多行连接成一列 我已经寻找过示例 但没有找到可以用来满足我的需求的示例 Country ProjectTA Complexity TID Sites Inits Name Unite
  • 主机和 GPU 上 CUDA 添加的不同结果

    我有一个函数可以获取彩色图片并返回其灰色版本 如果我在主机上运行顺序代码 一切都会完美运行 如果我在设备上运行它 结果会略有不同 与正确值相比 1000 个像素中的一个像素不是 1 就是 1 我认为这与转换有关 但我不确定 这是我使用的代码
  • html5 视频标签在 Android PhoneGap 中不起作用

    我已经在 android PhoneGap 中创建了应用程序 我想使用 html5 视频播放器播放视频 我的代码是
  • 追加时返回 null 的字符串

    我的任务是创建一个猜词游戏 您只有 5 次尝试猜测该单词的机会 用户一次输入一个字母 试图找出我的秘密单词 果汁 但您应该使用提示单词构造 每次猜测都会用正确的字母替换星号 如果正确 输出应该是这样的 欢迎来到猜词游戏 您有 5 次机会尝试