Java 逐行读取文件,同时将对象存储在每行的数组中
我有一个最多可以读取4行的文本文件。每一行都有由制表符隔开的字符串和整数的混合体 我已经成功地使我的程序读取1行,并将所有信息存储在适当的位置,同时在数组中存储一个新对象 问题是:我不知道如何让它读取多行,同时根据读取的行在数组中存储一个新对象 下面是我的方法,它获取文件并在数组中存储对象:Java 逐行读取文件,同时将对象存储在每行的数组中,java,file,object,Java,File,Object,我有一个最多可以读取4行的文本文件。每一行都有由制表符隔开的字符串和整数的混合体 我已经成功地使我的程序读取1行,并将所有信息存储在适当的位置,同时在数组中存储一个新对象 问题是:我不知道如何让它读取多行,同时根据读取的行在数组中存储一个新对象 下面是我的方法,它获取文件并在数组中存储对象: public void addVehicle(Vehicle Honda[]) throws FileNotFoundException { Scanner reader = new Scanner
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.");
}
}
如果您只能成功存储一个车辆实例,那是因为您太早关闭了读卡器 在addVehicle()中,除去
reader.close();
reader.close();
在readRecord()中,去掉
reader.close();
reader.close();
关闭addVehicle()末尾的读卡器。终于解决了我的问题
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;
}
public boolean addVehicle(车辆[]本田)抛出FileNotFoundException
{
布尔值=false;
int位置=0;
如果(canAddVehicle()==真)
{
对于(int i=0;i
您要调用两次“reader.close()”您如何声明vehicles数组的长度并初始化它?我还建议您多阅读一些Java约定——您没有完全正确地遵循大多数语法约定。例如,本田不应该被资本化。通常只有类别是大写的。另外,我建议将括号移到数组的左侧,如Vehicle[]honda
if(canAddVehicle()==true)
相当于if(canAddVehicle())
。另外Scanner reader=新的扫描仪(文件)如果
块中有代码,则可以将其移动到块中。在循环结束之前不要关闭读卡器
。这很有帮助,但它现在只读取文件的最后一行