所以我想从文本文件中读取一个String和一个int,它使我得到java.lang.ArrayIndexOutOfBoundsException:1
public class GetNameAndNumber{
private ArrayList <NameAndNumber> list = new ArrayList <NameAndNumber>();
BufferedReader buf = new BufferedReader(new FileReader("NameAndNumber.txt"));
String linie = buf.readLine();
while(true)
{
linie = buf.readLine();
if(linie == null)
break;
else
{
String split[] = linie.split(" ");
NameAndNumber nan = new NameAndNumber(split[0], Integer.parseInt(split[1]));
list.add(nan);
}
}
}
“ NameAndNumber”类具有一个字符串和一个整数
这是文本文件:
John 1
David 0
Ringo 55
我不知道为什么这会给我一个错误,但是当我读2个字符串然后是一个像
这样的int时NameAndNumber nan = new NameAndNumber(split[0], split[1], Integer.parseInt(split[2])); - this "NameAndNumber" having two strings and an int
用于文本文件,例如
Johnny John 8
Mathew John 0
它没有错误,并且正确存储了值。为什么?
答案 0 :(得分:1)
您很可能在一行上没有2个字符串。在文件末尾可能是空白行。我建议您在阅读后添加代码以显示每行,以进行调试。然后,您可以查看输入文件中错误行的位置。
linie = buf.readLine();
System.out.println("line: '" + linie + "'");
您可以添加其他代码以跳过没有两个字符串的行。
String split[] = linie.split(" ");
if (split.length < 2) continue; // skip bad input
答案 1 :(得分:1)
我假设在您的第一个文件中您有一些空白,因为我运行了您的代码,并且工作正常。我通过在索引末尾添加一些空白处使异常而使它失败。 您可以做的一件事是,通过修剪并检查行是否为空来添加一些检查,如下所示。
linie = buf.readLine().trim();
if(linie == null || linie.isEmpty())
break;
答案 2 :(得分:0)
尝试一下
for(;;) {
String line = bufferedReader.readLine();
if (line == null) {
break;
}
}