未从文件中正确读取值

lor*_*eed 0 java arrays file-io arraylist

我试图从用逗号分隔的文件中读取x,y坐标.但是,元素未正确添加到ArrayList.我在哪里错了?

ArrayList<Double> xpointArrayList = new ArrayList<Double>();
ArrayList<Double> ypointArrayList = new ArrayList<Double>();
try {
    BufferedReader input = new BufferedReader(new FileReader(args[0]));
    String line;
    while ((line = input.readLine()) != null) {
        line = input.readLine();
        String[] splitLine = line.split(",");

        double xValue = Double.parseDouble(splitLine[0]);
        double yValue = Double.parseDouble(splitLine[1]);

        xpointArrayList.add(xValue);
        ypointArrayList.add(yValue);
    }
    input.close();

    } catch (IOException e) {

    } catch (NullPointerException npe) {

    }

    double[] xpoints = new double[xpointArrayList.size()];
    for (int i = 0; i < xpoints.length; i++) {
        xpoints[i] = xpointArrayList.get(i);
    }
    double[] ypoints = new double[ypointArrayList.size()];
    for (int i = 0; i < ypoints.length; i++) {
        ypoints[i] = ypointArrayList.get(i);
    }
Run Code Online (Sandbox Code Playgroud)

当我在xpoints和ypoints数组上执行Array.toSring调用时.它只有一个数字.例如在文件中:

1,2
3,4
0,5
Run Code Online (Sandbox Code Playgroud)

xpoints数组只有3.0,ypoints数组只有4.0.哪里出错了?

Bri*_*ach 6

while ((line = input.readLine()) != null) {
    line = input.readLine();
Run Code Online (Sandbox Code Playgroud)

你只需读一行,丢弃它,然后读另一行.

冲洗,重复(因为它是一个循环).

将来,您真的应该考虑使用调试器.您可以在执行代码时逐步执行代码,并准确查看正在进行的操作.学会使用它将是非常宝贵的.

编辑添加:正如GregHaskins指出下面的评论,你也通过捕捉NullPointerException而不是采取行动来掩盖问题.在循环的第二次迭代中,linenull在第二次调用时,readLine()因为文件中没有任何内容.然后调用split()然后抛出NullPointerException你抓住的......然后默默地忽略.