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.