在java中使用对象数组
我正在用Java处理对象数组,我很难理解它们,我想这只是因为我还不习惯它们 基本上我想做的就是打开一个选项菜单。。当用户按下“1”(在主应用程序类中)时,它会将他们带到另一个类(addVehicle()),其中车辆对象作为参数传入。(这一切都很好) 在这一级别的顶部,我限制车辆最多4辆:在java中使用对象数组,java,Java,我正在用Java处理对象数组,我很难理解它们,我想这只是因为我还不习惯它们 基本上我想做的就是打开一个选项菜单。。当用户按下“1”(在主应用程序类中)时,它会将他们带到另一个类(addVehicle()),其中车辆对象作为参数传入。(这一切都很好) 在这一级别的顶部,我限制车辆最多4辆: Vehicle[] vehicles = new Vehicle[4]; 下面是添加车辆的方法: public void addVehicle(Vehicle vehicle[]) throws FileNo
Vehicle[] vehicles = new Vehicle[4];
下面是添加车辆的方法:
public void addVehicle(Vehicle vehicle[]) throws FileNotFoundException
{
reader = new Scanner(file);
if(canAddVehicle(vehicles[vehicles.length - 1]))
{
vehicle[vehicles.length - 1] = new Vehicle();
vehicle[vehicles.length - 1].readRecord(reader);
System.out.println("Vehicle Added!");
}
else
{
System.out.println("You can not add more than 4 vehicles.");
}
}
我希望它将此车辆对象存储在阵列中的下一个点中(如果仍有一个点打开),以及该车辆附带的所有信息
我这样做对吗?此车辆对象是否正确存储到阵列中?我是否应该询问关于我第一节课上车辆的信息?我认为问题在于你不理解
车辆。长度
代表什么
如果你说:
Vehicle[] vehicles = new Vehicle[4];
然后车辆。长度始终为4
。这是数组的长度;它是固定的(您不能调整数组的大小),而且您还没有为其任何元素指定任何内容也无关紧要。创建数组时将有四个元素,每个元素都包含null
要使用数组执行您试图执行的操作,您有两个选项
- 从
0
开始,跟踪您分配给车辆的上一个索引
- 每次要插入并查找第一个
null
的索引时,都要遍历数组。(注意,这是一种非常低效的方法)
更简单的方法是使用一种Java语言,它是动态的,并且随着添加内容的增加,其大小也会增加。举个例子。我认为问题在于你不理解车辆的长度所代表的含义
如果你说:
Vehicle[] vehicles = new Vehicle[4];
然后车辆。长度始终为4
。这是数组的长度;它是固定的(您不能调整数组的大小),而且您还没有为其任何元素指定任何内容也无关紧要。创建数组时将有四个元素,每个元素都包含null
要使用数组执行您试图执行的操作,您有两个选项
- 从
0
开始,跟踪您分配给车辆的上一个索引
- 每次要插入并查找第一个
null
的索引时,都要遍历数组。(注意,这是一种非常低效的方法)
更简单的方法是使用一种Java语言,它是动态的,并且随着添加内容的增加,其大小也会增加。一个例子。不。由于您已指定车辆
数组的长度,因此该长度将始终返回4,因此您将始终插入到数组的末尾。理想情况下,如果希望这样做,则需要保留一个插入元素数计数器(并检查是否有空间!)。另外,我不知道您的车辆
参数在做什么,因为它似乎没有被使用
一个更好的方法是使用,当然,如果你想学习如何使用对象数组,这对你没有帮助。不。由于您已指定车辆
数组的长度,因此该长度将始终返回4,因此您将始终插入到数组的末尾。理想情况下,如果希望这样做,则需要保留一个插入元素数计数器(并检查是否有空间!)。另外,我不知道您的车辆
参数在做什么,因为它似乎没有被使用
一个更好的方法是使用,当然,如果您想学习如何使用对象数组,这对您没有帮助。如果我理解正确,您正在尝试使用vehicles.length来计算已添加的项目数量。那是错误的。车辆。长度将始终返回4。这是一个检查下一个可用项的方法(假设您仍然希望使用数组)
private int nextAvailableIndex(T[]数组){
for(int i=0;i
您可以按照前面的建议使用ArrayList。但是,请记住ArrayList可以无限增长。您的代码应该如下所示:
List<Vehicle> l = new ArrayList<Vehicle>(4); // Initial/expected Capacity!
if(l.size() < 4) {
// do stuff
}
List l=newarraylist(4);//初始/预期容量!
如果(l.尺寸()<4){
//做事
}
如果我理解正确,您正在尝试使用vehicles.length来计算已添加的项目数量。那是错误的。车辆。长度将始终返回4。这是一个检查下一个可用项的方法(假设您仍然希望使用数组)
private int nextAvailableIndex(T[]数组){
for(int i=0;i
您可以按照前面的建议使用ArrayList。但是,请记住ArrayList可以无限增长。您的代码应该如下所示:
List<Vehicle> l = new ArrayList<Vehicle>(4); // Initial/expected Capacity!
if(l.size() < 4) {
// do stuff
}
List l=newarraylist(4);//初始/预期容量!
如果(l.尺寸()<4){
//做事
}
找到了我的解决方案!谢谢你的帮助
for(int i = 0; i < vehicles.length || !found; i++)
{
if(vehicles[i] == null)
{
Scanner reader = new Scanner(file);
vehicle[i] = new Vehicle();
vehicle[i].readRecord(reader);
found = true;
reader.close();
}
}
for(int i=0;i
找到了我的解决方案!谢谢你的帮助
for(int i = 0; i < vehicles.length || !found; i++)
{
if(vehicles[i] == null)
{
Scanner reader = new Scanner(file);
vehicle[i] = new Vehicle();
vehicle[i].readRecord(reader);
found = true;
reader.close();
}
}
for(int i=0;i