防止重复猜测

时间:2017-02-15 20:01:18

标签: java

我正在研究阻止String附加重复猜测的代码,防止出现2个相同的字母。目前,代码能够检测到重复的字母,但是,仅在第二次按下后显示它。例如,我按下" q"没有任何反应。我按" q"再次,现在字符串用q更新。我希望它在第一次猜测后立即显示q。

代码:

public void keyPressed(KeyEvent e) {
    keyChar = e.getKeyChar();
    String guessedLetters = buffer.toString();

        statusMsg.setText(model.guessNotification());

    if(guessedLetters.contains(Character.valueOf(keyChar).toString()))  {
        guessedLetters = buffer.toString();
    }
    else{
        buffer.append(keyChar);
    }
}   

2 个答案:

答案 0 :(得分:0)

从根本上说,您希望以用户可能进行的所有可能有效猜测的Set开始。然后,在猜测之后,检查该集合是否包含猜测(即,它的有效),然后从集合中删除该猜测。

答案 1 :(得分:0)

在向缓冲区追加信件后,您不会重新分配guessedLetters

(您也不需要在guessedLetters块中重新分配if,因为自第一次分配以来缓冲区没有发生变化。但这不是你的问题的原因。)

(另外,正如其他人所指出的,一个集合比StringBuffer更好。但是你仍然需要将集合的内容转换成一个字符串进行显示,你就可以了。 在向集合中添加元素后,仍然需要记住