【发布时间】:2020-02-04 08:29:49
【问题描述】:
我正在尝试使用从 .txt 文件中提取的数据创建“PhoneEntry”类的实例。 .split() 似乎有效地创建了一个数组(信息),其中包含文档中每一行的三个值(名字、姓氏和电话号码),但是当我尝试创建时出现越界错误“PhoneEntry”类的一个实例,使用 array[index] 公式调用每个值。我设法打印了 info 数组中的所有索引,因此它们包含正确的值,但是无法使用它们创建新的“PhoneEntry”。
到目前为止我...
1) 打印所有值以确保文件读取器循环在正确组装“信息”数组时完成其工作
2) 打印出信息数组的长度。它返回五个“3”和一个“1”。应该只有 5 个数组,因为 phonebook.txt 中只有 5 行内容,但可能有一个秘密 '/n' 或其他东西,如果是,我将如何删除该字符?
PhoneBook() // constructor for the phone book
{
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Users\\HP\\Desktop\\javaprojects\\phonebook2\\phonebook.txt");
String line;
try {
while ((line = bufferedReader.readLine()) != null) {
String[] info = line.split(" ");
System.out.println(info[0] + " " + info[1] + " "+info[2]);
phoneBook.add(new PhoneEntry(info[0], info[1], info[2]));
}
bufferedReader.close();
} catch (IOException e2){
e2.printStackTrace();
}
} catch (FileNotFoundException e1){
e1.printStackTrace();
}
}
.txt 文件:
Ali Katt (312)223-1937
Ima Knob (860)399-3044
Jo King (913)883-2874
Stew Pid (651)698-4631
Ug Lee (815)439-9271
确切的错误信息是:
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at PhoneBook.<init>(PhoneBook.java:16)
at PhoneBookTester.main(PhoneBookTester.java:10)
第 16 行引用了 print 语句,但实际上所有值都正确打印出来了,包括最后一个索引 (2)。在 print 语句出现之前,错误是指新的 phoneEntry。
我需要它来实际创建一个“PhoneEntry”实例并将其添加到数组列表“phoneBook”中
【问题讨论】:
-
看起来你的文件有一行没有空格,例如空行,否则它不会返回带有
info.length == 1的String[]。使用前添加长度检查。