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