如何将字符串行读取为双列并将其保存在方法中

时间:2019-05-31 08:00:33

标签: java arrays

我需要将字符串的以下行读取为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

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]);
}

>> Demo <<