Java 刽子手秋千
工作原理:这是一个适用于刽子手的swing小程序。“消息框”用来显示他们还剩多少猜测,然后显示他们最后是赢还是输。“输出窗格”将显示空的字母空格以及他们猜到的字母。(例如:如果单词是dog,它将显示u 问题:当我运行它时,我可以输入单词并按下OK。它在输出窗格中只显示一个下划线,在消息框中显示“您有6次尝试进行猜测”。然后出现一系列错误,应用程序崩溃。我没有第二个OK按钮的事件处理程序,他们在这里输入字母猜测,但我知道我需要一个。我只是不知道应该将哪些代码移到该事件处理程序Java 刽子手秋千,java,swing,applet,Java,Swing,Applet,工作原理:这是一个适用于刽子手的swing小程序。“消息框”用来显示他们还剩多少猜测,然后显示他们最后是赢还是输。“输出窗格”将显示空的字母空格以及他们猜到的字母。(例如:如果单词是dog,它将显示u 问题:当我运行它时,我可以输入单词并按下OK。它在输出窗格中只显示一个下划线,在消息框中显示“您有6次尝试进行猜测”。然后出现一系列错误,应用程序崩溃。我没有第二个OK按钮的事件处理程序,他们在这里输入字母猜测,但我知道我需要一个。我只是不知道应该将哪些代码移到该事件处理程序 private v
private void okbuttonwordActionPerformed(java.awt.event.ActionEvent evt){
字符串wordToGuess=wordToGuessTextBox.getText();
char[]下划线=新字符[wordToGuess.length()];
for(int i=0;i0&&unsuccessfulTries>0){
for(int i=0;i
之所以只获得一个下划线,是因为您不断将输出窗格中的文本设置为“+下划线[i]+”。每次设置文本时,您都会有效地删除以前存在的任何文本
对于这个问题,可以在设置文本之前将空格和下划线添加为一个字符串
至于异常,我当然会添加一个异常处理程序;但是,这实际上并不能解决问题。在这种情况下,错误通常是由错误处理数组引起的。我会仔细检查它们,以确保您没有初始化或调用不存在的元素。您的
while loop
正在阻止事件调度线程,基本上,wordLenToGuess
并没有减少到0
,因为如果我第一次没有做出准确的猜测,仍然有字母需要猜测。我鼓励您使用调试器,逐步检查代码并理解为什么它不工作,这将帮助您更好地理解如何工作您也可以修复它,请参见1)“然后弹出一堆错误”始终复制/粘贴错误和异常输出!2) 为了更快地获得更好的帮助,请发布一个or。
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 :(");
}