我正在研究阻止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);
}
}
答案 0 :(得分:0)
从根本上说,您希望以用户可能进行的所有可能有效猜测的Set
开始。然后,在猜测之后,检查该集合是否包含猜测(即,它的有效),然后从集合中删除该猜测。
答案 1 :(得分:0)
在向缓冲区追加信件后,您不会重新分配guessedLetters
。
(您也不需要在guessedLetters
块中重新分配if
,因为自第一次分配以来缓冲区没有发生变化。但这不是你的问题的原因。)
(另外,正如其他人所指出的,一个集合比StringBuffer更好。但是你仍然需要将集合的内容转换成一个字符串进行显示,你就可以了。 在向集合中添加元素后,仍然需要记住。