1

実際のコードは、配列内の各オブジェクトのプロパティに値をエンコードするように機能します。ただし、最後の行の情報は、各値を入力するためにのみ使用されます。

Scanner data = new Scanner(new DataInputStream(new FileInputStream("trucklist.txt")));
for (int i = 0; i < maxSize; i++) 
{   for(;data.hasNext();)
    {
        t[i].setVin(data.next());
        t[i].setMake(data.next());
        t[i].setModel(data.next());
        t[i].setColor(data.next());
        t[i].setYear(data.next());
        t[i].setBaySize(data.nextDouble());
        t[i].setCabSize(data.nextDouble());

        addElement(t[i]);
    }
}

はどこtrucklist.txtですか:

12x4578w Ford F-150 Black 2005 17.2 6.8
12x4589w Ford F-150 Blue 2005 17.2 6.8
12x4587f Ford F-250 Black 2007 60.8 9.5
12x4589z Ford F-150x White 2005 15.4 10.2

配列要素は、各要素の最後のプロパティセットによってのみ入力されます。どんな助けでも大歓迎です。

4

2 に答える 2

1

これは現在書き込まれているため、iまだ読み取るデータがある間はインクリメントされません。代わりにこれを試してください:

for (int i = 0; i < maxSize && data.hasNext(); ++i) {
    // set attributes of t[i]
    addElement(t[i]);
}

補足として、このルーチンは正しくフォーマットされたデータ ファイルに大きく依存しており、データの形式が正しくない場合はチェックされない例外をスローします。

于 2012-10-04T19:25:58.787 に答える
0

- FileInputStreamで十分です。ここで使用する必要はありませんDataInputStream

-より柔軟であるため、Collectionよりも常に a を使用することをお勧めします。array

この作業コードを参照してください。

public class Test {

    public static void main(String[] args) {

        File f = new File("D:\\text.txt");  ///-----Change the Path here-----///

        ArrayList<String> arList = new ArrayList<String>();

        try {
            Scanner scan = new Scanner(new FileInputStream(f));
            while (scan.hasNextLine()) {

                 arList.add(scan.nextLine());
            }
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }

        for(String s : arList){
        System.out.println(s);
        }

    }
}
于 2012-10-04T19:40:03.593 に答える