xiele
2015-06-08 11:39
老师,我把你最后的综合练习做了个扩展,遇到点小问题,求指教: 我创建了一个类car public class Car { public String name; public int rent; public int num; public int capacity; public int day; }
主程序中创建一个数组,存储数据
Car cars[] = {
new Passenger("奥迪A4", 500, 4, 0),
new Passenger("马自达6", 400, 4, 0),
new Pickup("皮卡雪6", 450, 4, 2, 0),
new Passenger("金龙", 800, 20, 0),
new Van("松花江", 400, 4, 0),
new Van("依维柯", 1000, 20, 0)
};
Passenger、Pickup、Van是子类,没有问题
我新建了一个数组,Car cs[] = new Car[b],用来存储选择的车辆
b为选择的车辆数量
想通过这样的方式来租用多辆同型号的车。
选择车辆时出了问题:
System.out.print("请输入第"+i+"辆车的序号:");
int c = input.nextInt();
cs[i-1] = cars[c-1];
我用这种方式选车
不重复时很顺利
但重复时,比如我选2辆“皮卡雪6”,第一辆租用5天,第二辆租用2天。
但输入第二辆租用2天后,第一辆的租用时间也会变成2天。
我debug测试了一下,
发现在改变cs数组中对于参数时,cars中的参数也改变了
而且选第二辆车cs[1]时,cs[0]也会跟着改变。
求教:
是不是 cs[i-1] = cars[c-1]; 这种方法只是把cs[i-1]位置指向了cars[c-1],而没有新建cs[i-1]的内存空间
我想新建一个内存空间 赋值与 cars[c-1] 相同。
应该怎么做?
是的,你这样做的方法只是把cs[i-1] 这个位置所在的元素,替换成cars[c-1]这个玩意。
如果你想新建一个内存,这个用数据是实现不了的,你可以学习第三季中的list集合
我弄了个2重数组,基本达到要求了,但感觉好复杂
Java入门第二季 升级版
530559 学习 · 6091 问题
相似问题