java.lang.ArrayIndexOutOfBoundsException如何删除此错误?

时间:2016-03-08 00:50:17

标签: java arrays bufferedreader

如何摆脱ArrayIndexOutOfBoundsException

以下是触发异常的代码:

FileReader fr;
try {
 System.out.println(4);
 fr = new FileReader("SOME FILE PATH");
 BufferedReader br = new BufferedReader(fr);

 String in ;
 while (( in = br.readLine()) != null) {
  String[] lines = br.readLine().split("\n");

  String a1 = lines[0];
  String a2 = lines[1];
  System.out.println(a2 + " dsadhello");
  a11 = a1;

  String[] arr = a11.split(" ");

  br.close();

  System.out.println(arr[0]);

  if (arr[0].equals("echo")) {

   String s = a11;

   s = s.substring(s.indexOf("(") + 1);
   s = s.substring(0, s.indexOf(")"));

   System.out.println(s);

   save++;

   System.out.println(save + " save numb");
  }
 }
 System.out.println(3);
} catch (FileNotFoundException ex) {
 System.out.println("ERROR: " + ex);

} catch (IOException ex) {
 Logger.getLogger(game.class.getName()).log(Level.SEVERE, null, ex);
}

并且是我从中提取的文件:

echo I like sandwiches (hello thee it work)

apples smell good

I like pie

yes i do

vearry much

2 个答案:

答案 0 :(得分:0)

可能会从以下行产生异常:

<header className="row panel panel-default"> someColBlocks </header>

我们正在使用String a2 = lines[1];来读取文件。此方法只读取一行并将其作为br.readLine()返回。因为它只有一行,所以它不会有'\ n',因此,将它与'\ n'分开将导致String只有一个元素(即0)。

为了使其有效,我们需要替换以下行:

array

String[] lines = br.readLine().split("\n"); String a1 = lines[0]; String a2 = lines[1]; System.out.println(a2 + " dsadhello");

我们这里不需要String a1 = in;,我们已经在a2循环中读取了这一行。没有必要再读一遍。

答案 1 :(得分:0)

在这部分

String in;
while ((in = br.readLine()) != null) {

    String[] lines = br.readLine().split("\n");

    String a1 = lines[0];
    String a2 = lines[1];
    System.out.println(a2 + " dsadhello");
    a11 = a1;

您读取了一行并忽略它,然后读取另一行并尝试按"\n"拆分它。不幸的是,\n返回的内容不会br.readLine(),因此lines只会有一个元素,并且加入line[1]会变为非法。

有了这个,你可以简单地写一下

while ((all = br.readLine()) != null) {