此错误消息的含义是什么:


  线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:Program.main处为1(Program.java:123)


这是第123行:

System.out.println(tempHolder[1]);


就是说没有数组元素1?但是,这是一个循环,该位置的所有100个元素都可以正常打印。这是代码:

数组splitResult具有100个元素。

    int counter = 0;
    for (String s: splitResult){
      counter++;
      counterForRegex = String.valueOf(counter);
      stringRegex = "(\\s*)?" + counterForRegex + "(\\s*)?";
      patternCounter = Pattern.compile(stringRegex);
      tempHolder = patternCounter.split(s, 2);  // This takes each of the 100 elements and separates it into 0) before the number, and 1) after the number, putting each element in array tempHolder.
      splitResult[counter-1] = tempHolder[0];
      System.out.println(tempHolder[1]); // These all print fine.
    }

最佳答案

tempHolder = patternCounter.split(s, 2); //当找不到该数字时,分割结果将仅返回输入。

tempHolder.length将为1,在这种情况下,尝试访问tempHolder [1]时将抛出java.lang.ArrayIndexOutOfBoundsException。

 tempHolder = patternCounter.split(s, 2);
  if(tempHolder.length>=2){//check the length of tempHolder
     splitResult[counter-1] = tempHolder[0];
     System.out.println(tempHolder[1]); // These all print fine.
  }

10-06 09:36