我需要将字符串的以下行读取为double类型的单独列,然后将这些列保存在名为setPosition
的方法中。字符串行是
[1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1,0,0,1,0,1,0,1,0,0,0,1,0]
存储在名为hh
的文件中。
我使用下一个代码执行此任务,但是仍然有问题。
for (int i = 0; i < getSize(); ++i){
File file1 = new File("hh.txt");
try {
Scanner scan = new Scanner(file1);
while (scan.hasNextLine()) {
String line1 = scan.nextLine();
line1 = line1.replaceAll("\\[","");
line1 = line1.replaceAll("\\]","");
String[] columns = line1.split(",");
double new_columns = Double.parseDouble(columns[i]);
setPosition(i, new_columns);
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
我遇到以下错误
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at PSOFS.Swarm1.getParticle(Swarm1.java:39)
at PSOFS.Main.main(Main.java:181)
Java Result: 1
答案 0 :(得分:1)
要获取double[]
中的值,您只需读取一次并进行解析。现在,您正在循环阅读,因此您多次打开了一个读取文件
然后您可以根据需要执行任何操作
File file1 = new File("hh.txt");
Scanner scan = new Scanner(file1);
String[] values = scan.nextLine().replace("[", "").replace("]", "").split(",");
double[] valuesD = new double[values.length];
for (int i = 0; i < values.length; ++i){
valuesD[i] = Double.parseDouble(values[i]);
}