字符串拆分使数组超出范围

时间:2016-02-15 13:11:06

标签: java string split

我需要拆分已从外部文件读取的字符串。我已设法使用此代码拆分字符串;

String[] parts = line.split("\\.");
String part1 = parts[0];
String part2 = parts[1];

现在当我尝试访问数据时,index [0]的part1工作正常,但是试图让index [1]抛出索引超出范围的异常。我试图拆分的数据看起来像这样

  

886.0452586206898 27115740907.871643
  888.0387931034484 26218442896.246094
  890.032327586207 25301777157.154663
  892.0258620689656 24365534070.686035
  894.0193965517242 23409502709.11487

我是否打算在进行字符串拆分之前删除空格?

4 个答案:

答案 0 :(得分:1)

我猜你是在逐行读取文件,然后你应该首先拆分"空间"然后再点,否则你会得到损坏的数据......

  

886.0452586206898 27115740907.871643

如您所见,每行中有2个元素可以用点

分割

答案 1 :(得分:1)

因为我非常怀疑该指数正在迷失。您可能希望尝试此代码以确定数据是否完全有效。如果错误仍然发生,您可能会在某个不同的地方出现错误原因,并希望显示您的实际堆栈跟踪。

while ((line = br.readLine()) != null) { 
    if(line.contains(".")) {
        String[] parts = line.split("\\."); 
        String part1 = parts[0]; 
        String part2 = parts[1];
    } else {
        System.out.println("Corrupted data as: " + line);
    }
}

答案 2 :(得分:0)

    String[] parts = null;
    String part1 = null;
    String part2 = null;


    System.out.println(parts[2]);
    while ((line = br.readLine()) != null) {
        System.out.println(line);
        parts = line.split("\\.");
        part1 = parts[0];
        part2 = parts[1];
    }

它无法正常工作,因为您正在尝试访问在while内声明的变量。尝试在它之外声明。

答案 3 :(得分:0)

是否要从输入中提取每个数字,然后按小数分割? 在这种情况下,使用扫描仪首先读入每个数字,然后拆分:

Scanner s = new Scanner(System.in);
while (s.hasNext()) {
  String num = s.next();
  String[] parts = num.split("\\.");
  ...
}