Java 为arraylist中的每个项创建对象

Java 为arraylist中的每个项创建对象,java,object,arraylist,Java,Object,Arraylist,我已经学习java一个多月了,以前没有OOP经验,所以请提供简单的答案 我正在做的项目本质上是一个简单的游戏。我获取一个包含可变数量车辆名称的txt文件,并允许用户输入车辆名称,然后输入命令 如何为arraylist中的每个项目创建对象? 这就是我到目前为止所做的(我在代码注释中给出了一个我正在尝试做的示例): 公共级车辆{ 公共静态void main(字符串[]args)抛出FileNotFoundException、IOException{ File myDir=新文件(System.get

我已经学习java一个多月了,以前没有OOP经验,所以请提供简单的答案

我正在做的项目本质上是一个简单的游戏。我获取一个包含可变数量车辆名称的txt文件,并允许用户输入车辆名称,然后输入命令

如何为arraylist中的每个项目创建对象?

这就是我到目前为止所做的(我在代码注释中给出了一个我正在尝试做的示例):

公共级车辆{
公共静态void main(字符串[]args)抛出FileNotFoundException、IOException{
File myDir=新文件(System.getProperty(“user.dir”);
File myFile=新文件(myDir,“vehicleNames.txt”);
FileReader in=新的FileReader(myFile);
BufferedReader br=新的BufferedReader(in);
ArrayList vehicleList=新的ArrayList();
int i=0;
字符串行=null;
而((line=br.readLine())!=null){
车辆列表。添加(行);
System.out.println(vehicleList.get(i));
//我基本上想要完成的是:
//Vehicle vehicleList.get(i)=新车();
i++;
}
br.close();
System.out.println(“按如下方式输入用户输入:\n”+
", ");
}
}

我假定您希望实际将
字符串
传递给
车辆
类,因为无法动态分配变量名:

Vehicle newVehicle = new Vehicle(vehicleList.get(i));
如果您实际上是想为
ArrayList
中的每个项目创建一辆新的
车辆
,您可以按如下操作:

for(String s : vehicleList){
    Vehicle newVehicle = new Vehicle(s);
}
上述内容相当于以下内容:

for(int i=0; i<vehicleList.size(); i++){
    Vehicle newVehicle = new Vehicle(vehicleList.get(i));
}
现在,您可以检查给定的
车辆是否有匹配的名称!例如:

Vehicle vehicle = new Vehicle("Honda Civic");
if(vehicle.getName().equals("Honda Civic")){
    System.out.println("Match!");
}

我假定您希望实际将
字符串
传递给
车辆
类,因为无法动态分配变量名:

Vehicle newVehicle = new Vehicle(vehicleList.get(i));
如果您实际上是想为
ArrayList
中的每个项目创建一辆新的
车辆
,您可以按如下操作:

for(String s : vehicleList){
    Vehicle newVehicle = new Vehicle(s);
}
上述内容相当于以下内容:

for(int i=0; i<vehicleList.size(); i++){
    Vehicle newVehicle = new Vehicle(vehicleList.get(i));
}
现在,您可以检查给定的
车辆是否有匹配的名称!例如:

Vehicle vehicle = new Vehicle("Honda Civic");
if(vehicle.getName().equals("Honda Civic")){
    System.out.println("Match!");
}
好的,首先要做的事。 你需要一个车辆等级。 在名为Vehicle.java的文件中(重要)

制作一个简单的类:

public class Vehicle
{
    //vehicle information
    private String name;

    //Constructors
    //default
    public Vehicle()
    {
        name = "";
    }
    //with param
    public Vechicle(String _name)
    {
        name = _name;
    }
}
现在更改数组列表以包含车辆对象

ArrayList<Vehicle> vehicleList = new ArrayList<>();
这应该让你开始了

好的,首先要做的事。 你需要一个车辆等级。 在名为Vehicle.java的文件中(重要)

制作一个简单的类:

public class Vehicle
{
    //vehicle information
    private String name;

    //Constructors
    //default
    public Vehicle()
    {
        name = "";
    }
    //with param
    public Vechicle(String _name)
    {
        name = _name;
    }
}
现在更改数组列表以包含车辆对象

ArrayList<Vehicle> vehicleList = new ArrayList<>();

这应该让你开始了

车辆列表的类型为
字符串
。这意味着您只能将
String
对象添加到该列表中

因此,您必须将
车辆列表的类型更改为
车辆

ArrayList vehicleList=新建ArrayList()

然后,您可以创建车辆对象并在
车辆列表中传递它们,如下所示:

while((line = br.readLine()) != null){
        vehicleList.add(new Vehicle(line));
        System.out.println(vehicleList.get(i).getName());
}
请记住,您必须有一个接受名称的构造函数,以及该名称的存储(成员字段),如下所示:

Vehicle.java
类中

使用
System.out.println(vehicleList.get(i).getName())打印每个车辆项目的名称,,
您必须在类中创建一个公共getter方法,用于检索车辆名称:

public String getName()
{
    return name;
}

车辆列表
列表的类型为
字符串
。这意味着您只能将
String
对象添加到该列表中

因此,您必须将
车辆列表的类型更改为
车辆

ArrayList vehicleList=新建ArrayList()

然后,您可以创建车辆对象并在
车辆列表中传递它们,如下所示:

while((line = br.readLine()) != null){
        vehicleList.add(new Vehicle(line));
        System.out.println(vehicleList.get(i).getName());
}
请记住,您必须有一个接受名称的构造函数,以及该名称的存储(成员字段),如下所示:

Vehicle.java
类中

使用
System.out.println(vehicleList.get(i).getName())打印每个车辆项目的名称,,
您必须在类中创建一个公共getter方法,用于检索车辆名称:

public String getName()
{
    return name;
}

我肯定我错了,但在我看来,它只创建了一个名为newVehicle的对象。如果我的类中有一个名为PowerOn()的方法,我将如何为一个名为fastCar1的车辆调用它?@TryingToCode第一个代码只创建一个新的
车辆
。但是
for
循环中的对象创建的
车辆
对象数量与
车辆列表中的元素数量相同,如果您想根据OOP原则识别名为“fastCar1”的车辆,请尝试编码Ok,您应该在
Vehicle
类中使用getter,通过该getter,您可以验证您提供的名称是否确实是
fastCar1
。加拿大人David,首先感谢您的帮助。恐怕我在这里还是有点迷路。我正在使用for循环,但我仍然不确定如何访问我创建的对象。在我的vehicle类中,我有一个名为PowerOn()的方法,它只是将一个名为PowerState的布尔值设置为true。因此,假设fastCar1是vehicleList中的一个元素,我如何调用fastCar1对象的PowerOn()?如果您需要访问您创建的车辆,那么您应该将它们添加到
列表或
ArrayList
。我肯定我错了,但在我看来它只创建了一个名为newVehicle的对象。如果我的类中有一个名为PowerOn()的方法,我将如何为一个名为fastCar1的车辆调用它?@TryingToCode第一个代码只创建一个新的
车辆
。但是
for
循环中的那些对象创建的
车辆
对象与
车辆列表中的元素一样多。如果您想按照OOP原则识别名为“fastCar1”的车辆,您应该在
车辆
类中使用一个getter来验证