0

これは list 関数です。ベクトル dataList に追加される前に newEntry の内容を出力していることがわかります。

public static Vector<entry> list()
{
    entry newEntry = new entry();
    Vector<entry> dataList = new Vector<entry>();
    String[] splitLine;
    String currentLine;
    String formattedString = "";

    BufferedReader in;
    try
    {
        in = new BufferedReader(new FileReader(new File("data.txt")));
        while ((currentLine = in.readLine()) != null) {
            newEntry = new entry();
            splitLine = currentLine.split(" ");
            newEntry.record = Integer.parseInt(splitLine[0]);
            newEntry.fName = splitLine[1];
            newEntry.lName = splitLine[2];
            newEntry.phoneNumber = splitLine[3];
            dataList.add(newEntry);
        }
    }
    catch (IOException ex)
    {
        System.out.println(ex);
    }

    for (int i = 0; i < dataList.size(); i++)
    {
        System.out.println(dataList.elementAt(i).record + dataList.elementAt(i).fName + dataList.elementAt(i).lName + dataList.elementAt(i).phoneNumber);
    }

    return dataList;
}

これは私が問題を抱えている部分です.list()が返されたもの(上記)を取得し、それを新しいベクトルに形成して出力します. ただし、何らかの理由で最後の値のみを出力しています...

if ((params[0].toLowerCase()).equals("list"))
{
    Vector<entry> printList = new Vector<entry>(list());
    for (int i = 0; i < printList.size(); i++)
    {
        System.out.println(printList.elementAt(i).record + printList.elementAt(i).fName + printList.elementAt(i).lName + printList.elementAt(i).phoneNumber);
    }
}

これは、リスト関数の dataList に 3 (以下に示す最初の 3) が追加されたときに得られる出力です。

1000 ジョン・カーター 1731371313
1001 エイブ・リンカーン 9173913143
1002 ウィリアム・テル 794174141
1002 ウィリアム・テル 794174141
1002 ウィリアム・テル 794174141
1002 ウィリアム・テル 794174141

誰が何が間違っているのか知っていますか?

4

4 に答える 4

3

newEntry を上書きし続けます。この行はループ内にある必要があります。

entry newEntry = new entry(); 
于 2013-11-11T00:35:01.740 に答える