我的问题是试图读取包含散乱数组的文件。我想我就快到了,但是我一直收到空指针异常错误。欢迎任何帮助或建议。这是我的代码。
import java.io.*;
import java.util.Scanner;
import java.util.*;
public class Calories2{
public static void fileReaderMethod(String fileName) throws FileNotFoundException, IOException {// This method reads the file and inputs the measurements
Scanner input ;
try{ // into an array of type int.
input = new Scanner (new File(fileName));
}
catch (FileNotFoundException e){
System.out.println("File Does Not Exist");
System.out.println("Choose another file");
Scanner in = new Scanner(System.in);
fileName = in.next();
input = new Scanner (new File(fileName));
}
FileReader fr = new FileReader(fileName);
BufferedReader textReader = new BufferedReader(fr);
int row=0;
String currentRow;
while((currentRow = textReader.readLine())!= null){
rows++;
}
fr = new FileReader(fileName);
textReader = new BufferedReader(fr);
String [] columns = textReader.readLine().split(" ");
int [][] caloriesOfTheWeekArray = new int [7][];
fr = new FileReader(fileName);
textReader = new BufferedReader(fr);
for(int i = 0; i < caloriesOfTheWeekArray.length; i++){
String columnArray [] = textReader.readLine().split(" ");
for (int j = 0; j < columns.length; j++){
caloriesOfTheWeekArray[i][j] = Integer.parseInt(columnArray[j]);
}
}
}
public static void main (String [] args)throws FileNotFoundException, IOException {
fileReaderMethod("Calories.txt");
}
}这是我得到的错误。
Exception in thread "main" java.lang.NullPointerException
at Calories2.fileReaderMethod(Calories2.java:36)
at Calories2.main(Calories2.java:41)第36行是
caloriesOfTheWeekArray[i][j] = Integer.parseInt(columnArray[j]);和41是我调用读取文件的方法的位置
我正在尝试读取的文件
200 10000
450 845 1200 800
800
400 1500 1800 200
500 1000
700 1400 170
675 400 100 400 300发布于 2017-02-05 17:25:38
所以问题出在你对caloriesOfTheWeekArray使用的初始化方式上,
int [][] caloriesOfTheWeekArray = new int [7][];这将初始化7行,但无法初始化您的列,因为您尚未指定它们。在不初始化列的情况下,您尝试访问第36行中的列,
caloriesOfTheWeekArray[i][j] = Integer.parseInt(columnArray[j]);这会导致你的不良反应。
因此,将长度设置为columnArray.length的列初始化。
for(int i = 0; i < caloriesOfTheWeekArray.length; i++){
String columnArray [] = textReader.readLine().split(" ");
caloriesOfTheWeekArray[i] = new int[columnArray.length];
for (int j = 0; j < columnArray.length; j++){
caloriesOfTheWeekArray[i][j] = Integer.parseInt(columnArray[j]);
}
}此外,您使用的是column.length而不是columnArray.length,后者也负责NPE。
https://stackoverflow.com/questions/42050090
复制相似问题