2013-10-17 126 views
0

嗨,我是編程新手,我們有一個任務來創建一個hang子手遊戲。現在我遇到的問題是猜測。該計劃猜測一切正常,並且正常工作。雖然它不打印出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

您應該

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 += "*"; 
} 

這將使你要記住從一個猜測到另一箇中的最後一項。如果您的標籤正確初始化,您可以刪除整個if語句。

然而,你的代碼存在另一個問題,即如果你的隨機變量中有多個相同的字母出現,你只能找到第一個。

條件:

if(i=position) 

應該

if (guess2 == random.charAt(i)) 
+0

使用JTextField和wordField.getText(displaySecret)的Im;它不適用於它爲我說的字符串。 – Looptech

+0

對不起,它不參與編輯。 getText()適用,因爲它是從JTextComponent繼承的。 – Dunedain

+0

感謝它正在工作,除了現在它不選擇所有的答:如果一個字是香蕉例如 – Looptech

0
wordField.setText(displaySecret); 

wordField.setText(wordField.getText()+displaySecret); 

認爲世界領域內的代碼替換值用新的,方法聲明說它set,它不是addText

+0

它不工作,因爲它仍然覆蓋以前的信。 – Looptech

+0

然後你必須在內存或數據庫中存儲用戶已經輸入的所有過去的字母。 – RamonBoza

+0

它是存儲它嗎? – Looptech