如何摆脱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
答案 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) {