【问题标题】:Java hangman: check if given letter is inside char array [duplicate]Java hangman:检查给定的字母是否在char数组中[重复]
【发布时间】:2019-06-23 15:33:07
【问题描述】:

我有一个字符串数组,其中包含要转换为 char 数组的单词。另外,我将用户输入作为字符串,然后将其转换为 char 并将其添加到数组中。我正在尝试根据单词检查用户输入,以及它是否匹配 println 正确或不正确。我不确定如何编码。

private String[] wordsForGuessing = new String[] {"one", "david", 
                                         "storage", "unhelpful"};
private String ranWord = randomWord(wordsForGuessing);
private char[] convertRanWordToACharArray = ranWord.toCharArray();

private int MAX_SIZE = countsHowManyLettersAreInAWord(ranWord);
//adding three extra turns to guess
private char[] letter = new char[MAX_SIZE + 3];

private String guess;

//Check user input to see if the letter is in the word
private void checkUserInputToRanWord(char[] word, String guess)
{
    String message = "This is ";

    for(int i = 0; i < word.length; i++)
    {
        if(guess.charAt(0) == word[i])
        {
            message += " correct guess";
        }else{
            message += " incorrect guess";
        }
    }

}

【问题讨论】:

  • 如果您的要求只是用数组的单词检查用户输入,那么需要转换成字符数组吗?
  • 您发布的代码似乎缺少几个方法。
  • @Tim,我没有包含一些方法,因为它们与我想要做的事情无关。
  • @Mak,我想我会尝试循环遍历两个数组以寻找匹配项,但没有成功。
  • 定义“无效”。您在做什么(即要猜测的单词是什么,用户输入的字符串是什么),您希望准确发生什么(即输出应该是什么),以及准确地发生了什么(即实际输出)?

标签: java arrays


【解决方案1】:

已经有关于如何检查事物是否是数组的一部分的问题,例如:How do I determine whether an array contains a particular value in Java?

带有循环的一般模式是在第一次匹配时使用break; 离开循环

boolean found = false;
for (int i = 0; i < word.length; i++)
{
    if (guess.charAt(0) == word[i])
    {
        found = true;
        break;
    }
}
if (found) {
    ...
}

然而,现代 java 您可以使用流和anyMatch(); 将其减少为一行,如链接答案中所示。

我还建议您查看现有的 Java 中 Hangman 实现,您可以在此站点(链接在右上方)和其他站点上找到这些实现,并从中学习。

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多