我当前创建的代码存储了文本文件的第一行,创建了一个新的Vehicle对象,并将其放在第一个null位置的数组中,并将相同的行存储在数组中的每个空值中。我需要它能够:
存储第一行的内容,然后在数组的第一个位置存储一个新的Vehicle对象,该对象为null。然后重复,直到没有更多的行。
我认为这是我的for循环的一个问题。 注 - 我需要使用Array而不是ArrayList
public void addVehicle(Vehicle[] Honda) throws FileNotFoundException
{
if(canAddVehicle() == true)
{
for(int i = 0; i < vehicles.length; i++)
{
if(vehicles[i] == null)
{
Scanner reader = new Scanner(file);
Honda[i] = new Vehicle();
Honda[i].readRecord(reader);
vehicles[i] = Honda[i];
reader.close();
}
}
System.out.println("Vehicle Added!");
}
else
{
System.out.println("You can not add more than 4 vehicles.");
}
}
车辆类:
public void readRecord(Scanner reader)
{
setMake(reader.next());
setModel(reader.next());
setYear(reader.nextInt());
setvin(reader.next());
setValue(reader.nextDouble());
setMilesDriven(reader.nextInt());
setLastOilChange(reader.nextInt());
}
数据文件:
Hyundai Sonata 2010 ABC236347NM2N2NW2 18455.34 8765 7567
Chevy Blazer 1998 1234H32343LMN3423 29556.65 38559 38559
// EDIT \ Constraits :我无法创建任何新的公共方法或构造函数,也无法获得任何其他类级数据
答案 0 :(得分:2)
你正在 {/ 1}}方法中循环,即使这只是存储一个对象,不是吗?
您可以删除readRecord
循环 - 尽管这依赖于while
调用者知道文件中有多少条目。
您似乎更有可能拥有一个方法来读取文件中的所有内容,填充addVehicle
并返回它。例如:
List<Vehicle>
答案 1 :(得分:0)
找到我的解决方案!
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;
}