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.哪里出错了?
while ((line = input.readLine()) != null) {
line = input.readLine();
Run Code Online (Sandbox Code Playgroud)
你只需读一行,丢弃它,然后读另一行.
冲洗,重复(因为它是一个循环).
将来,您真的应该考虑使用调试器.您可以在执行代码时逐步执行代码,并准确查看正在进行的操作.学会使用它将是非常宝贵的.
编辑添加:正如GregHaskins指出下面的评论,你也通过捕捉NullPointerException而不是采取行动来掩盖问题.在循环的第二次迭代中,line将null在第二次调用时,readLine()因为文件中没有任何内容.然后调用split()然后抛出NullPointerException你抓住的......然后默默地忽略.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |