0

Hi there I'm currently working on a Who Wants To Be A Millionaire GUI Game and have been stumped on this bug/error for the past few hours. The questions and answer choices for my game are stored in a text file and then I'm reading that text file into an ArrayList in the following method which exists in the ReadQuestions class.

private GetQuestionAnswer[] readQuestionsFromTextFile() throws IOException
    {
            File file = new File("questions.txt");
            BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
            final List<GetQuestionAnswer> questions = new ArrayList<GetQuestionAnswer>();
            String questionLine = null;
            
            while((questionLine = bufferedReader.readLine()) != null)
            {
                final String[] split = questionLine.split(":");
                final String[] questionAndChoices = split[0].trim().split("%");
                final String questionText = questionAndChoices[0];
                final String[] choices = Arrays.copyOfRange(questionAndChoices, 1, questionAndChoices.length);
                final String correctAnswer = split[1].trim();
                final GetQuestionAnswer question = new GetQuestionAnswer(questionText, choices, correctAnswer);
                questions.add(question);
            }
            return questions.toArray(new GetQuestionAnswer[0]);
    }

Now in my frontend class when I want to set the text to the JLabel for the question and the JButtons for the answer choices, i come accross a NullptrException. Here is the method in my Gui class where I am setting the text for the JLabel and the JButtons:

private void displayQuestion(final int questionId) 
    {
        try {
            final GetQuestionAnswer question = this.rq.getQuestion(questionId);
            this.currentQuestion = question;
            questionItself.setText(question.getQuestionText());
            final String[] choices = question.getChoices();
            firstOptionButton.setText(choices[0]);
            secondOptionButton.setText(choices[1]);
            thirdOptionButton.setText(choices[2]);
            fourthOptionButton.setText(choices[3]);
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    }

That was the code and this is the error that I am getting in the Console:

java.lang.NullPointerException
    at Assignment2.MillionaireGui.displayQuestion(MillionaireGui.java:533)
    at Assignment2.MillionaireGui.questionScreen(MillionaireGui.java:524)
    at Assignment2.MillionaireGui$5.actionPerformed(MillionaireGui.java:373)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:262)
    at java.awt.Component.processMouseEvent(Component.java:6539)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Would really appreciate if someone could help me out with this! Thanks.

0 Answers0