gpt4 book ai didi

java - 对二维数组进行冒泡排序时出现空指针异常

转载 作者:行者123 更新时间:2023-12-02 05:04:50 24 4
gpt4 key购买 nike

我的代码是读取一个txt文件,然后根据用户指定的字段对其进行排序,然后将其输出到表格上。代码如下:

public static void sortByAtomicNumber() throws IOException
{
File file = new File("Elements.txt");
FileReader reader = new FileReader(file);
BufferedReader i = new BufferedReader(reader);

int lines = 0;
while (i.readLine() != null) {
lines++;
}

String[][] s = new String[lines][];
String line;
int index = 0;

DefaultTableModel model = new DefaultTableModel( //Builds the table model
new Object[]{"Name","Symbol","Atomic Number","Atomic Mass", "# of Valence Electrons"},
0);

while ((line = i.readLine()) != null && index < 10)
s[index++] = line.split(",");

for (int x = 0; x < s.length; x++)
{
for (int j = x + 1; j < s.length; ++j)
{
if (Integer.parseInt(s[x][2])>(Integer.parseInt(s[j][2])))
{

String[] temp = s[x];
s[x] = s[j];
s[j] = temp;
}
}
}

for(int x=0;x<s.length;++x){
Object[]rows = {s[x][0], s[x][1], s[x][2], s[x][3], s[x][4]}; //Puts information about the sorted elements into rows
model.addRow(rows);

}
JTable table = new JTable(model);
JOptionPane.showMessageDialog(null, new JScrollPane(table)); //Displays the table

}

当我运行程序时,在这一行出现 java.lang.NullPointerException:

if (Integer.parseInt(s[x][2])>(Integer.parseInt(s[j][2])))

这是它搜索的数据: /image/1vzR8.png

不知道为什么会发生这种情况,有人可以帮助我吗?

最佳答案

您实际上并未将数据读入数组 s 。问题是,在计算行数的过程中,您已读到文件末尾,并且没有重置 i回到最初。因此 s 的每个元素是 null 。因此,第一次尝试读取和解析一行(在第二个循环中)返回 null并且解析循环的主体永远不会被执行。

您可以关闭并重新打开该文件,尝试使用 mark()reset()i ,或(最好)读入 ArrayList<String[]>而不是对文件进行两次读取。

关于java - 对二维数组进行冒泡排序时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27882728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com