【发布时间】:2021-06-05 06:49:06
【问题描述】:
我有一个简单的类,它创建具有三个实例(品牌、油箱容量和油耗-l/100km-)的车辆。这些是公共的,可以使用下面的构造函数创建对象:
public class VehicleClass
{
String brand;
int tank;
double consumption;
VehicleClass (String brand, int tank, double consumption)
{
this.brand = brand;
this.tank = tank;
this.consumption = consumption;
}
}
我想创建一个包含两辆车的数组,所以在主类中,我创建了这三个对象:
public class VehicleMain
{
public static void main (String[] args)
{
VehicleClass car1 = new VehicleClass ("Ford", 40, 6.5);
VehicleClass car2 = new VehicleClass ("Volkswagen", 50, 5.0);
VehicleClass cars[] = new VehicleClass[] {car1, car2};
}
}
我想创建一个方法,使用数组cars,将返回两辆车最大范围的数组。这是我的方法:
public int[] distances (VehicleClass[] car)
{
int[] range = new int[car.length];
for (int i = 0; i < car.length; i++)
{
range[i] = (int) ((tank * 100) / consumption);
}
return range;
}
在主类中使用 import java.util.Arrays 访问此方法:
System.out.println (Arrays.toString (car<number>.distances(cars)));
但是,如果我放 car1,我只会得到 [615, 615],如果我放 car2,我只会得到 [1000, 1000]。我的目标是它会返回[615, 1000]。
放这个,给我一个错误:
System.out.println (Arrays.toString (cars.distances(cars)));
我做错了什么?有没有可能按照我的想法去做?如果有人能澄清我这个问题,我将不胜感激。我是 OOP 的初学者。
【问题讨论】:
-
也许,在
distances方法中,您的意思是使用car[i].tank和car[i].consumption。目前您只使用接收到distances方法调用的对象的tank和consumption。 -
creates a vehicle with three instances (brand, tank capacity and fuel consumption -l/100km-)。我想你的意思是vehicle with three fields -
在 Vehicle 中创建一个新方法,例如
Vehicle#distance,返回单辆车的距离。然后,只需为输入数组制作这些距离的数组即可。目前,您正在尝试结合这些概念。 -
不鼓励使用
VehicleClass cars[]语法,推荐的语法是VehicleClass[] cars。
标签: java arrays class object instance