Чтение файла построчно при сохранении объекта в массиве для каждой строки - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть текстовый файл с максимум 4 строками для чтения. Каждая строка содержит смесь строк и целых чисел, разделенных табуляцией.

Я успешно заставил мою программу прочитать 1 строку и сохранить всю информацию в соответствующем месте, а также сохранить новый объект в массиве.

Проблема: я не могу понять, как заставить его читать несколько строк при сохранении нового объекта в массиве в зависимости от прочитанной строки.

Вот мой метод, который берет файл и сохраняет объект в массиве:

public void addVehicle(Vehicle Honda[]) throws FileNotFoundException
{
    Scanner reader = new Scanner(file);

        if(canAddVehicle() == true)
        {
        for(int i = 0; i < vehicles.length; i++)
        {
            if(vehicles[i] == null)
            {
                Honda[i] = new Vehicle();
                Honda[i].readRecord(reader);
                vehicles[i] = Honda[i];
                reader.close();
                break;
            }
        }
            System.out.println("Vehicle Added!");
        }
        else
        {
            System.out.println("You can not add more than 4 vehicles.");
        }
}

И метод readRecord ():

public void readRecord(Scanner reader)
{
    while(reader.hasNextLine())
    {
        setMake(reader.next());
        setModel(reader.next());
        setYear(reader.nextInt());
        setvin(reader.next());
        setValue(reader.nextDouble());
        setMilesDriven(reader.nextInt());
        setLastOilChange(reader.nextInt());
    }
    reader.close();
}

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

Если вы можете успешно сохранить только один экземпляр Vehicle, это потому, что вы слишком рано закрываете ридер.

В addVehicle () избавьтесь от

reader.close();

и readRecord (), избавьтесь от

reader.close();

Закройте ридер в конце addVehicle ().

0 голосов
/ 08 декабря 2011

Наконец-то исправили мою проблему!

public boolean addVehicle(Vehicle[] Honda) throws FileNotFoundException
{
    boolean found = false;
    int position = 0;
        if(canAddVehicle() == true)
        {
            for(int i = 0; i < vehicles.length && !found; i++)
            {
                if(vehicles[i] == null)
                {
                    position = i;
                    found = true;
                }
            }

               Scanner reader = new Scanner(file);
               while(reader.hasNext())
               {
                   Honda[position] = new Vehicle();
                   Honda[position].readRecord(reader);
                   vehicles[position] = Honda[position];
                   position++;

               }
                reader.close();
                return true;
        }
        return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...