gpt4 book ai didi

java - .charAt() 返回空指针异常

转载 作者:行者123 更新时间:2023-12-01 17:15:28 26 4
gpt4 key购买 nike

我编写了一个小程序,其中有一个带有字符串名称的二维数组。在嵌套的 for 循环中,我检查数组每个元素中的第一个字符。如果第一个字符是“A” || 'E' || ‘我’|| 'O'|| 'U',我使用 FileWriter 将该元素写入文件中。但是,每次我尝试编译该程序时,都会收到 NullPointerException。这是代码:

FileWriter fw = new FileWriter("imena.txt");

String polje[][] = new String[5][5];
polje[0][0] = "Janez";
polje[0][1] = "Tine";
polje[0][2] = "Miha";
polje[0][3] = "Klemen";
polje[0][4] = "Jure";

polje[1][0] = "Tone";
polje[1][1] = "Andrej";
polje[1][2] = "Janko";
polje[1][3] = "Nejc";
polje[1][4] = "Erik";

for(int i = 0; i < polje.length; i++) {
for(int j = 0; j < polje[0].length; j++) {
if(polje[i][j].charAt(0) == 'A') {
fw.write(polje[i][j] + '\n');
}
}
}

如果我将 if 更改为 if(polje[1][1].charAt(0) == 'A') 它运行得很好,但我想迭代所有数组中的元素。任何帮助将不胜感激。

事实证明,我忘记初始化数组中的所有元素。我不敢相信我自己看不到问题。 :)

谢谢大家的帮助! ;)

最佳答案

您仅初始化到 polje[1][...]。因此,当 i 为 2(且 j 为任意值)时,polje[i][j] 将为 null...并且当您取消引用时通过调用 charAt(0),您将得到异常。

请注意,可以使用 List 而不是数组来避免此类错误,因为数组的大小会动态增长。您甚至可以混合两者:

List<String[]> polje = new ArrayList<>();
polje.add(new String[] { "Janez", "Tine", ... };
polje.add(new String[] { "Tone", "Andrej", ... };

for (String[] array : polje) {
for (String item : array) {
// This way you'll handle empty strings, too
if (item.startsWith("A")) {
fw.write(item + '\n');
}
}
}

关于java - .charAt() 返回空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459322/

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