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

-使用 a Collectionthan总是更好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 回答