Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 刽子手秋千_Java_Swing_Applet - Fatal编程技术网

Java 刽子手秋千

Java 刽子手秋千,java,swing,applet,Java,Swing,Applet,工作原理:这是一个适用于刽子手的swing小程序。“消息框”用来显示他们还剩多少猜测,然后显示他们最后是赢还是输。“输出窗格”将显示空的字母空格以及他们猜到的字母。(例如:如果单词是dog,它将显示u 问题:当我运行它时,我可以输入单词并按下OK。它在输出窗格中只显示一个下划线,在消息框中显示“您有6次尝试进行猜测”。然后出现一系列错误,应用程序崩溃。我没有第二个OK按钮的事件处理程序,他们在这里输入字母猜测,但我知道我需要一个。我只是不知道应该将哪些代码移到该事件处理程序 private v

工作原理:这是一个适用于刽子手的swing小程序。“消息框”用来显示他们还剩多少猜测,然后显示他们最后是赢还是输。“输出窗格”将显示空的字母空格以及他们猜到的字母。(例如:如果单词是dog,它将显示u

问题:当我运行它时,我可以输入单词并按下OK。它在输出窗格中只显示一个下划线,在消息框中显示“您有6次尝试进行猜测”。然后出现一系列错误,应用程序崩溃。我没有第二个OK按钮的事件处理程序,他们在这里输入字母猜测,但我知道我需要一个。我只是不知道应该将哪些代码移到该事件处理程序

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 :(");


}