从文本文件中删除用户指定的字符串

时间:2017-05-24 13:50:36

标签: java arrays list text

我正在编写一个代码,要求我让用户输入一个名字。如果我的文本文件中与该名称匹配,它将从文本文件中删除该名称。文本文件如下:
- 第一个名字
- 名字
- 电话号码
当用户输入该人的名字时,必须从文本文件中删除所有这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();
}

2 个答案:

答案 0 :(得分:0)

解析行的文件行,例如使用Stringtokenizer

您的代码看起来像一个联系人包含3行,所以如果您匹配您的名字,请省略该联系人的3行。

- &GT;将您的联系人检查为阻止,并在删除要删除的联系人后将其写入新文件。

答案 1 :(得分:0)

您是否在问为什么要获得越界例外?

您可能会尝试引用10约束之外的区域,可能使用以下行(特别是match+1部分)

for (int l=match+1;l<10;l++)