【问题标题】:How to Convert a char to a local variable of Type Letter Called Guessed.?如何将 char 转换为称为 Guessed 的字母类型的局部变量。?
【发布时间】:2014-04-09 02:34:14
【问题描述】:
  1. 切换回 Phrase 类。添加一个返回布尔值的新方法guessLetter 并以 char 作为参数。这将用于查看玩家是否猜出字母 正确。此方法应: ● 将 char 转换为 Letter 类型的局部变量,称为 guessed ● 如果猜测是字母,则返回 true,否则返回 false
public class Phrase {
  private String phrase;

  public Phrase(String phrase) {
      phrase = phrase.toUpperCase();
      for(char c : phrase.toCharArray()) {
          letters.add(new Letter(c));
      }
  }

  public String getPhrase() {
      return phrase;
  }

  // public String phrase;
  ArrayList<Letter> letters = new ArrayList<Letter>();

  public ArrayList<Letter> getLetters() {
      return letters;
  }


public boolean guessLetter(char c) {
      char c = new char(Letter);
      c = guessed;

      return false;
  }

}

谢谢。我想不通这个。

package edu.htc.java1.phrasegame.model;

public class Letter {
private char letter;

private boolean isHidden;

public int getLetter() {
    return letter;
}
public boolean isHidden() {
    return isHidden;
}

public void unhide() {
    isHidden = false;

}
public Letter(char letter) {
    this.letter = letter;
    if (String.valueOf(letter).matches("[A-Z]")) {
        isHidden = true;
    }
}

}

【问题讨论】:

  • 能否也知道您来自哪个学校,哪个教授问了这个问题?这个问题很有必要解决。
  • 那无关紧要。我不想为我完成它,我想了解如何正确调用它。我可以告诉你,我在 google 和 HeadFirst Java Book 上都没有找到任何提示。
  • 好的,我会认真的,对之前的评论感到抱歉。你也可以给我上课信吗?这不是你在谷歌上可以找到的,所以我会尽力帮助你。

标签: java


【解决方案1】:

char c = new char(Letter); 应该是Letter guessedLetter = new Letter(c);

我不确定c = guessed; 应该做什么。

然后您需要查看guessedLetter 是否在letters 中。你怎么做取决于Letter的实现。

编辑:现在我看到了Letter 实现,正确的解决方案是在Letter 中覆盖equals(),可能比较letter。在本练习中,您可以在不实现 hashCode() 的情况下逃脱,但您也确实应该覆盖它。那么你的guessLetter() 方法可以是:

public boolean guessLetter(char c) {
  return letters.contains(new Letter(c));
}

或者满足问题中的约束:

public boolean guessLetter(char c) {
    Letter guessed = new Letter(c);
    return letters.contains(guessed);
}

【讨论】:

  • 谢谢,非常感谢。
【解决方案2】:

我目前的假设是这样的

public boolean guessLetter(char c)
{
    // convert received character to letter
    Letter letter = new Letter(c);

    // loop through your list of letters
    for(Letter l : letters)
    {
        // if list of letters contains same letter as the one you received then return true
        if(l.getLetter() == letter.getLetter())
            return true;
    }

    // we did not find the letter, so we return false
    return false;
}

请务必阅读并理解此代码。如果你因为选择复制粘贴答案而未能通过课程,没有人会哭泣。

【讨论】:

  • if(l.getLetter() == letter.getLetter()) 违反了“告诉,不要问”。请参阅martinfowler.com/bliki/TellDontAsk.html 了解更多信息。
  • 我的导师鼓励使用 StackOverflow。但我理解你的观点,我很感激你的帮助。 StackOverflow 通常是我最后的手段。
  • @user3381466 没问题。抱歉之前的粗鲁评论。你似乎真的很感兴趣。你无法相信有多少人通常只期待答案,所以我不公正地怀有敌意。抱歉 :( 祝你好运,如果你还有其他问题,请尽管提问,我们会提供帮助 :)
  • @MikeB 我同意你的观点,但在这种情况下,你不会被要求修改 Letter 类,因此我选择使用提供的内容,而不是为 Letter 类编写 equals 方法等。
  • 这样合适吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多