gpt4 book ai didi

java - 区分读取文件和方法中的用户输入

转载 作者:行者123 更新时间:2023-12-01 15:38:49 25 4
gpt4 key购买 nike

该程序从 FleetInterface 类开始,向用户询问文件 (run())。 buildFleet() 方法读取文件,然后通过调用 addVehicle() 方法将 Vehicle 调用到 Fleet 类,并在该方法中将新的 Vehicle 对象设置为车辆阵列。

完成所有这些后,会出现一个用户菜单,询问他们是否愿意 1.) 添加车辆,2.) 删除车辆。

假设他们添加了一辆新车辆。要求是让用户手动输入有关该车辆的数据(与开头文件中的所有信息相同)。问题是这个选项还调用了addVehicle()。如果我在 addVehicle() 方法中编写一些语句,例如“请输入您的车辆型号:”,那么当程序首次启动并调用 addVehicle() 时,也会显示这些语句。

棘手的部分 - 我不允许创建任何新的公共(public)方法(仅限私有(private)),并且我无法添加任何新的类级别数据。

我的 Fleet 类有 2 个构造函数:1 个为空(此处不允许设置任何内容),1 个参数值为 File(用于读取原始文件)。

总而言之,我需要一种方法让程序通过读取文件中的值来启动,调用addVehicle(),然后还允许用户通过手动输入车辆扫描仪..同时还调用 addVehicle()

这是我的代码:

FleetInterfaceApp:

public void run() throws FileNotFoundException
{
File file = new File(getFile());
fleet = new Fleet(file);
buildFleet(file);
}

private void buildFleet(File file) throws FileNotFoundException
{
fleet = new Fleet(file);
fleet.addVehicle(Honda);

userMenu(file, fleet);

}

private void userMenu(File file, Fleet fleet) throws FileNotFoundException
{
int choice = 0;

Scanner input = new Scanner(System.in);

this.createMenu();
choice = this.menu.getChoice();

switch(choice)
{
case 1:
fleet.addVehicle(Honda);
break;
}
}

舰队:类(class)级别数据(无法更改):

Vehicle[] vehicles = new Vehicle[4];
File file;

添加车辆:

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 之前将车队对象中的文件属性设置为临时文件。 文件属性可供其他类访问,因为它的作用域默认为包私有(private)。这意味着同一包中的任何类都可以访问它。如果 FleetInterfaceApp 位于同一个包中,那么它已经可以执行此操作。

这里是一些基于问题中提供的代码的示例代码。这需要额外的工作才能运行。

// somewhere inside userMenu(File file, Fleet fleet)
File tempFile = File.createTempFile( "tmp", ".tmp" );

FileWriter fout = new FileWriter( tempFile );
fout.append( userInput );
fout.close();

fleet.file = tempFile;

switch(choice)
{
case 1:
fleet.addVehicle(Honda);
break;
}

关于java - 区分读取文件和方法中的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8408102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com