使用JFrame的JAVA贷款计算器的异常?

使用JFrame的JAVA贷款计算器的异常?,java,swing,exception,jframe,calculator,Java,Swing,Exception,Jframe,Calculator,我想如果我能排除程序在运行时给我的一些异常,我几乎就成功了。以下是我的代码: package RandomMathGame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class RandomMathGame { public static void main(String[] args) { RandomP

我想如果我能排除程序在运行时给我的一些异常,我几乎就成功了。以下是我的代码:

package RandomMathGame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class RandomMathGame {

    public static void main(String[] args) {
        RandomProblemGenerator randomProblems = new RandomProblemGenerator(10);
        final int numberProblems = 10;
        int correctScore = 0;
        JPanel panel = new JPanel();
       int answer;
        int correctAnswer;
        JLabel[] mathProblems = new JLabel[numberProblems];
        final JTextField[] mathAnswers = new JTextField[numberProblems];
        JLabel[] correctYesNo = new JLabel[numberProblems];
        final JLabel score = new JLabel(correctScore + "/10");
        JButton submit = new JButton("Submit");
        for (int i = 1; i <= numberProblems; i++)
        {
            final int X = randomProblems.createNumberX();
            final int Y = randomProblems.createNumberY();

            mathProblems[i] = new JLabel("" + X + " * " + Y + " = ");
            mathAnswers[i] = new JTextField();


             answer = Integer.parseInt(mathAnswers[i].getText());
             correctAnswer = X * Y;

            if (answer == correctAnswer)
            {
                correctYesNo[i] = new JLabel("Correct answer; good job!");
                correctScore = correctScore + 1;
            }
            else
            {
               correctYesNo[i] = new JLabel("Incorrect answer; try again!");

            }
             panel.add(mathProblems[i]);
             panel.add(mathAnswers[i]);
             panel.add(correctYesNo[i]);
            }

        final int temp = correctScore;
      submit.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                score.setText("Score: " + temp + "/10");
            }
        });



        panel.add(submit);
        panel.add(score);

        JFrame gameFrame = new JFrame();
        gameFrame.setTitle("Random Math Game");
        gameFrame.setSize(150, 150);
        gameFrame.setVisible(true);
        gameFrame.setContentPane(panel);



        }
  }
我的时间紧迫,任何帮助都将不胜感激

answer = Integer.parseInt(mathAnswers[i].getText());
是什么导致了这个错误。这是因为您的一个文本字段为空。在接受用户输入之前进行一些验证,除非您希望应用程序出错

   String answerStr = mathAnswers[i].getText();

    if(answerStr.isEmpty()){

          correctYesNo[i] = new JLabel("Not a valid answer/answer field empty!");
    } else {

         answer = Integer.parseInt(answerStr);
         correctAnswer = X * Y;
         //Rest of your code goes here
    }
是什么导致了这个错误。这是因为您的一个文本字段为空。在接受用户输入之前进行一些验证,除非您希望应用程序出错

   String answerStr = mathAnswers[i].getText();

    if(answerStr.isEmpty()){

          correctYesNo[i] = new JLabel("Not a valid answer/answer field empty!");
    } else {

         answer = Integer.parseInt(answerStr);
         correctAnswer = X * Y;
         //Rest of your code goes here
    }
希望这对你有帮助


希望这对你有帮助

您正试图从刚创建的空白字段中获取

mathAnswers[i] = new JTextField();
answer = Integer.parseInt(mathAnswers[i].getText());
所以在这里,你只是从错误的地方检查。 似乎在第一步中,您希望创建文本字段,第二行应该在其他事件中出现


希望它能帮助您

从您刚刚创建的空白字段中获取信息

mathAnswers[i] = new JTextField();
answer = Integer.parseInt(mathAnswers[i].getText());
所以在这里,你只是从错误的地方检查。 似乎在第一步中,您希望创建文本字段,第二行应该在其他事件中出现


希望它能帮助我克服那个例外。谢谢。@Commandrix这就是你看到的吗?如果这解决了你的问题,接受答案。让我通过了那个例外。谢谢。@Commandrix这就是你看到的吗?如果这解决了你的问题,接受答案。