我有一个文本文件,最多可以读取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();
}
你正在调用两次“reader.close()” – ComputerSaysNo
你是如何声明汽车数组的长度和初始化它?我还建议你更多地阅读一下你的Java约定 - 你没有完全遵循大部分的语法约定。例如,本田不应该被大写。通常只有班级大写。另外,我建议将括号移到数组的左侧,比如'Vehicle [] honda'。 – Andrew
'if(canAddVehicle()== true)'等价于if(canAddVehicle())'。另外'扫描仪阅读器=新的扫描仪(文件);'可以移动到'if'块内。 –