所以,我正在编写一个程序,其中我需要一个循环,它将读取并写入存储在数组的每个元素中的字符串的第一个字符到输出文件"。
我一直收到NullPointerException:a = planets [i] .charAt(0);
String[] planets = new String[8];
char a = 'a';
String pl = "planets.txt";
File file = new File(pl);
Scanner inputFile = new Scanner(file);
for(int i = 0; i < planets.length; i++){
while(inputFile.hasNext()){
planets[i] = inputFile.nextLine();
}
}
inputFile.close();
System.out.println("closed.");
String b = "planetfirst.txt";
PrintWriter outputFile = new PrintWriter(b);
for (int i = 0; i< planets.length; i++){
a = planets[i].charAt(0);
outputFile.println(a);
}
outputFile.close();
System.out.println("Data written to the file.");
提前致谢!
编辑: 我添加了我的程序的其余部分用于某些上下文:)
答案 0 :(得分:1)
你的while循环在for循环中,所以所有文本都在planets[0]
内,其余索引都是空的(即null
)。当您稍后使用
for(int i = 0; i < planets.length; i++) {
a = planets[i].charAt(0);
}
当NullPointerException
大于0时,您将获得i
。
如果你的文本文件有8行,则不需要while循环,因为你有一个迭代8次的for循环和一个长度为8的数组。
但是,如果文本文件中的行数不同,则不应使用数组,而是使用arraylist,而不是for循环,只有while循环。
像
这样的东西List<String> planets = new ArrayList<String>();
while(inputFile.hasNext()){
planets.add(inputFile.nextLine());
}