首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件读入Ragged数组

将文件读入Ragged数组
EN

Stack Overflow用户
提问于 2017-02-05 16:43:04
回答 1查看 451关注 0票数 0

我的问题是试图读取包含散乱数组的文件。我想我就快到了,但是我一直收到空指针异常错误。欢迎任何帮助或建议。这是我的代码。

代码语言:javascript
复制
    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");
}
    }

这是我得到的错误。

代码语言:javascript
复制
    Exception in thread "main" java.lang.NullPointerException
    at Calories2.fileReaderMethod(Calories2.java:36)
    at Calories2.main(Calories2.java:41)

第36行是

代码语言:javascript
复制
    caloriesOfTheWeekArray[i][j] = Integer.parseInt(columnArray[j]);

和41是我调用读取文件的方法的位置

我正在尝试读取的文件

代码语言:javascript
复制
    200 10000
    450 845 1200 800
    800
    400 1500 1800 200
    500 1000
    700 1400 170
    675 400 100 400 300
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 17:25:38

所以问题出在你对caloriesOfTheWeekArray使用的初始化方式上,

代码语言:javascript
复制
 int [][] caloriesOfTheWeekArray = new int [7][];

这将初始化7行,但无法初始化您的列,因为您尚未指定它们。在不初始化列的情况下,您尝试访问第36行中的列,

代码语言:javascript
复制
 caloriesOfTheWeekArray[i][j] = Integer.parseInt(columnArray[j]);

这会导致你的不良反应。

因此,将长度设置为columnArray.length的列初始化。

代码语言:javascript
复制
 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42050090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档