數組的新建和引用
老師,我把你最后的綜合練習做了個擴展,遇到點小問題,求指教: 我創建了一個類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] 相同。
應該怎么做?
2015-06-08
是的,你這樣做的方法只是把cs[i-1] 這個位置所在的元素,替換成cars[c-1]這個玩意。
如果你想新建一個內存,這個用數據是實現不了的,你可以學習第三季中的list集合
2015-06-08
我弄了個2重數組,基本達到要求了,但感覺好復雜