我有一个文本文件,最多可以读取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();
}
答案 0 :(得分:3)
如果您只能成功存储一个Vehicle实例,那是因为您过早关闭了阅读器。
在addVehicle()中,摆脱
reader.close();
并在readRecord()中删除
reader.close();
在addVehicle()的末尾关闭阅读器。
答案 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;
}