我正在编写一个代码,要求我让用户输入一个名字。如果我的文本文件中与该名称匹配,它将从文本文件中删除该名称。文本文件如下:
- 第一个名字
- 名字
- 电话号码
当用户输入该人的名字时,必须从文本文件中删除所有这3个项目。
所以这是我当前的代码,它给我一个错误说
java.lang.ArrayIndexOutOfBoundsException: 9 at Ex8PhoneDirectoryDelete.main(Ex8PhoneDirectoryDelete.java:62)"
我目前只是想通过仅输入列表中的第二个名称来使其工作。
public static void main (String[] args) throws IOException {
c = new Console();
int match = 0;
int count = 0;
String[] FirstNames = new String [10];
String[] LastNames = new String [10];
String[] PhoneNumber = new String [10];
BufferedReader input = new BufferedReader(new FileReader("phone_directory.txt"));
for (int i = 0; i < 10; i++) {
FirstNames[i] = input.readLine();
LastNames[i] = input.readLine();
PhoneNumber[i] = input.readLine();
}
c.print("Please enter a first name to delete from the phone directory: ");
String nameEntered = c.readLine();
for (int k = 0 ; k < 10 ; k++) {
if (nameEntered.equalsIgnoreCase(FirstNames[k])) {
//c.print("Match Found!!!");
//match = k;
//c.println(match);
count = count + 1;
}
}
c.println(match);
String[] FirstNames2 = new String[10-count];
if (count != 0) {
c.println("There is a match.");
for (int j = 0; j < match; j++) {
FirstNames2[j] = FirstNames[j];
c.println(FirstNames2[j]);
}
for (int l = match + 1; l < 10; l++) {
FirstNames2[l] = FirstNames[l];
c.println(FirstNames2[l]);
}
} else {
c.println("There is no match.");
}
input.close();
}
答案 0 :(得分:0)
解析行的文件行,例如使用Stringtokenizer。
您的代码看起来像一个联系人包含3行,所以如果您匹配您的名字,请省略该联系人的3行。
- &GT;将您的联系人检查为阻止,并在删除要删除的联系人后将其写入新文件。
答案 1 :(得分:0)
您是否在问为什么要获得越界例外?
您可能会尝试引用10
约束之外的区域,可能使用以下行(特别是match+1
部分)
for (int l=match+1;l<10;l++)