-1
工作原理:這是一個hang子手的搖擺小程序。 「消息框」是顯示他們剩下多少猜測,然後顯示他們最終是贏還是輸。 「輸出窗格」是顯示空白字母空間和他們猜測的字母。 (例如:如果這個詞是狗,它會顯示_ _ _,如果他們猜測一個D,它將是d _ _)。Hang子手搖擺小程序凍結
問題:當我運行它時,我可以輸入該單詞並按下確定。它在輸出窗格中僅顯示一個下劃線,並在消息框中顯示「您有6次嘗試猜測」。然後出現一堆錯誤,應用程序崩潰。我沒有第二個確定按鈕的事件處理程序,他們輸入他們的字母猜測,但我知道我需要一個。我只是混淆了哪些代碼應該移至該事件處理程序。
private void okButtonWordWordActionPerformed(java.awt.event.ActionEvent evt) {
String wordToGuess = wordToGuessTextBox.getText();
char[] underscore = new char[wordToGuess.length()];
for (int i = 0; i < wordToGuess.length(); i++) {
underscore[i] = '_';
}
for (int i = 0; i < wordToGuess.length(); i++) {
underscore[i] = '_';
}
int wordLenToGuess = wordToGuess.length();
int unsuccessfulTries = 6;
while(wordLenToGuess >0 && unsuccessfulTries >0){
for (int i = 0; i < wordToGuess.length(); i++) {
outputPane.setText(" " + underscore[i] + " ");
}
messageBox.setText("You have " +unsuccessfulTries+ " tries to make a guess");
char guess = letterGuess.getText().charAt(0);
boolean iscorrect = false;
for (int i = 0; i < underscore.length; i++) {
if(wordToGuess.charAt(i) == guess)
{
underscore[i] = guess;
wordLenToGuess--;
iscorrect = true;
}
}
if(!iscorrect)
unsuccessfulTries--;
}
if(wordLenToGuess == 0)
messageBox.setText("YOU WIN!! :)");
else messageBox.setText("Sorry! You Lose :(");
}
你的'while-loop'阻塞了事件分派線程,基本上'wordLenToGuess'沒有被簡化爲'0',因爲如果我第一次沒有做出準確的猜測,被猜測。我鼓勵你使用調試器,並逐步瞭解代碼,並理解它爲什麼不起作用,它會幫助你更好地理解你將如何修復它 – MadProgrammer
另請參見[*「Java小程序是否值得學習?」]( https://softwareengineering.stackexchange.com/a/196500/110799) – Radiodef
1)*「然後出現一堆錯誤」*始終複製/粘貼錯誤和異常輸出! 2)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –