从文件中读取整数并将它们与下一个最高编号对齐

时间:2017-11-05 20:45:49

标签: java

我必须读取一个包含数字列表的文件,然后输出列表中的每个数字,下一个更大的数字。例如,如果列表是

78, 22, 56, 99, 12, 14, 17, 15, 1, 144, 37, 23, 47, 88, 3, 19

输出应如下所示:

78: 88
22: 23
144: max value

这是我到目前为止所拥有的

public class Numbers {

    public static void main(String[] args) {
        Scanner fileScan;
        try {
            fileScan = new Scanner(new File("list.txt"));
            int data[][] = new int[10][];
            int row = 0;
            while(fileScan.hasNextLine()) {
                String line = fileScan.nextLine();
                String[] lineTokens = line.split(",");
                data[row] = new int[lineTokens.length];
                for (int col = 0; col<lineTokens.length; col++) {
                    data[row][col] = Integer.parseInt(lineTokens[col]);
                }
                row++;
            }
            for (row = 0; row<data.length; row++) {
                for (int col = 0; col<data[row].length; col++) {
                    System.out.print(data[row][col]+" ");
                }
                System.out.println();
            }
            System.out.println();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        catch (NullPointerException e) {
            e.printStackTrace();
        }
    }
}

我一直得到** **行的空指针异常。

我很困惑如何将数组排列成我可以读取两个整数的方式,以便打印出正确的值。

1 个答案:

答案 0 :(得分:0)

您的NullPointerException正在本节中发生

for (row = 0; row < data.length; row++) {
                //if (data[row] == null) continue;
                for (int col = 0; col < data[row].length; col++) {
                    System.out.print(data[row][col] + " ");
                }
                System.out.println();
}

您将数组的长度分配为10,因此data.length为10,但如果您的文件中没有行数,则数据[row]为空。

至于你关于安排数字的问题的其他部分,我不知道你想要实现的目标。如果你能更好地解释它,那么我将编辑答案。