为了账号安全,请及时绑定邮箱和手机立即绑定

数组的新建和引用

老师,我把你最后的综合练习做了个扩展,遇到点小问题,求指教:
我创建了一个类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] 相同。

应该怎么做?

正在回答

3 回答

是的,你这样做的方法只是把cs[i-1] 这个位置所在的元素,替换成cars[c-1]这个玩意。

如果你想新建一个内存,这个用数据是实现不了的,你可以学习第三季中的list集合

0 回复 有任何疑惑可以回复我~
#1

xiele 提问者

似乎是明白了,谢谢
2015-06-08 回复 有任何疑惑可以回复我~

我弄了个2重数组,基本达到要求了,但感觉好复杂

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530559    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

数组的新建和引用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信