嗨,我是编程新手,我们有一个创建刽子手游戏的任务。现在我遇到的问题是猜测。该程序猜测一切正常,它正常工作。虽然它没有打印出JTextField
中的字母,或者它打印出1个字母,但是当我再次猜错时,前一个字母会被覆盖。
那么任何友善的灵魂都可以伸出援助之手?
继承我检查的代码:
private class check implements ActionListener {
public void actionPerformed(ActionEvent ae) {
try {
// Grabs the letter from the guessField and converts it into a char which can be used to compare against the word.
guess = guessField.getText();
guessField.setText("");
char guess2 = guess.charAt(0);
String displaySecret = "";
for (int i = 0; i < random.length(); i++)
displaySecret += "*";
//read in a guess
int position = random.indexOf(guess2);
//now position contains the index of guess inside secret, or
//-1 if the guess was wrong
String newDisplaySecret = "";
for (int i = 0; i < random.length(); i++)
if (i == position)
newDisplaySecret += random.charAt(i); //newly guessed character
else
newDisplaySecret += displaySecret.charAt(i); //old state
displaySecret = new String(newDisplaySecret);
wordField.setText(displaySecret);
}
答案 0 :(得分:0)
wordField.setText(displaySecret);
到
wordField.setText(wordField.getText()+displaySecret);
认为world字段中的代码将值替换为新值,方法声明称为set
,而不是addText
。
答案 1 :(得分:0)
您应该从
更改初始化显示密钥的方式String displaySecret = "";
for (int i = 0; i < random.length(); i++)
displaySecret += "*";
到
String displaySecret = wordField.getText();
if(displaySecret=NULL){/*case for fist execution*/
displaySecret="";
for (int i = 0; i < random.length(); i++)
displaySecret += "*";
}
这将使您能够记住从一个猜测到另一个猜测的最后一个条目。如果正确初始化了Label,则可以删除整个if语句。
但是你的代码还有另外一个问题,即如果你的随机变量中出现过多次相同的字母,你只能找到第一个。
条件:
if(i=position)
应该是
if (guess2 == random.charAt(i))