萌新求助!!!Java 空指针异常java.lang.NullPointerException问题

TheLissandra 2019-05-11 09:37:35
我在做一个选择题的gui,代码如下,用循环创建Button和Panel,以及读取文件时会循环性地报空指针异常
每次都报很多行,但是程序能编译运行,不知道为什么,跪求大神解答!!!
附有报错图片



import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
public class MultipleChoiceGui2 extends JFrame{
JFrame myFrame;
JButton resetButton;
JPanel topPanel, myPanel, botPanel;
JLabel topLabel, scoreLabel;
int count = 0;
String[][] myList = new String[4][5];
int[] numsj = new int[5];
int[] numsk = new int[5];
JPanel[] pns = new JPanel[4];//create a Panel array
JButton[] jbs = new JButton[4];//create a Button array

public static void main(String args[]){
MultipleChoiceGui2 mcGui = new MultipleChoiceGui2();//must use GridLayout in Panel, BorderLayout in Frame
mcGui.launchFrame();
}
public class resetListener implements ActionListener{
public void actionPerformed(ActionEvent e){//back to the first question
launchFrame();
//need to close the former window!!!!!
}
}
public class answerListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(numsk[0]==0){//can run here
pns[0].setVisible(false);
pns[1].setVisible(true);
topLabel.setText(myList[1][0]);
jbs[0].setText(myList[1][1]);
jbs[1].setText(myList[1][2]);
jbs[2].setText(myList[1][3]);
jbs[3].setText(myList[1][4]);
if(e.getSource().equals(jbs[0])){
count = count + 1;
}
}
else if(numsk[1]==1){//cannot run here
jbs[0].setText("English");

}
}
}
public void launchFrame(){
myFrame = new JFrame();//Create a Frame
myFrame.setTitle("Multiple Choice Questions");
myFrame.setLayout(new BorderLayout());
topPanel = new JPanel();
topPanel.setLayout(new GridLayout(3,2));
topPanel.add(new JLabel(" "));
topLabel = new JLabel("Question 1 of 4 : What is the capital of France?",JLabel.CENTER);
topPanel.add(topLabel);
topPanel.add(new JLabel(" "));
for(int k = 0; k<4 ; k++){//a loop for 4 Panels to store 4 questions
numsk[k] = k;
pns[k] = new JPanel();
pns[k].setLayout(new GridLayout(5,0,20,50));
Border titleBorder1 = BorderFactory.createTitledBorder("Possible Answers: click one");//Create a border and bordertitle
pns[k].setBorder(titleBorder1);
for(int j = 0; j<4; j++){//a loop for creating 4 answer buttons to put them onto each Panel
numsj[j] = j;//record j in a nums array
//System.out.println(nums[j]);
jbs[j] = new JButton();
fileRead();
jbs[j].setText(myList[0][j+1]);//put answer string onto button 1~4
jbs[j].addActionListener(new answerListener());
//System.out.println(jbs[j].getText());
pns[k].add(jbs[j]);
pns[k].add(new JLabel(" "));
}
myFrame.add("Center",add(pns[k]));
}
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(800, 600);
myFrame.setVisible(true);
botPanel = new JPanel();
botPanel.setLayout(new GridLayout(1,3,20,80));
botPanel.add(new JLabel(" "));
scoreLabel = new JLabel("score = " + count);
botPanel.add(scoreLabel);
resetButton = new JButton("reset score");
resetButton.setSize(0, 5);
resetButton.addActionListener(new resetListener());
botPanel.add(resetButton);
botPanel.add(new JLabel(" "));

myFrame.add("North",topPanel);//Add Panels into Frame
myFrame.add("South",botPanel);
//myFrame.add("Center",pns[0]);

}
public void fileRead(){//to read sampleQandA in a txt file
try{
String filename = "C:\\Users\\admin\\Desktop\\JAVA\\javamini\\sampleQandA.txt";
FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String oneLine = "";
while(oneLine != null){
for(int i=0; i<4 ; i++){
for(int k=0; k<5 ;k++){
myList[i][k] = new String("");
oneLine = bufferedReader.readLine();
myList[i][k] = oneLine.toString();//java.lang.NullPointerException!!!!!!!!!!!!
//System.out.println(myList[i][k].toString());
}
}

}
bufferedReader.close();
fileReader.close();
}
catch(Exception e){
e.printStackTrace();
}
finally{

}

}

}

下面是报空指针异常的图片


...全文
62 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcbeyond 2019-05-11
  • 打赏
  • 举报
回复
158行,具体是哪一行代码?
根据报空指针的异常行,不难判断问题的

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧