我有以下设置物品价格的方法:
主要类
public void setShoePrice(){
int selectionNumber = shoeList.getSelectedIndex();
Double[] shoesPrices = {1.00, 2.00, 3.00};
Basket.shoePrice+= shoePrices[selectionNumber];
}
我还有另一个类,这是shoeLibrary类,这是鞋子的arraylist保留的地方。
ShoeLibrary Class
public class ShoeLibrary {
private ArrayList<Shoe> shoes;
public ShoeLibrary() {
shoes = new ArrayList<Shoe>();
shoes.add(new Shoe("Shoe 1", 1.00));
shoes.add(new Shoe("Shoe 2", 2.00));
shoes.add(new Shoe("Shoe 3", 3.00));
}
所以目前如果我想改变鞋子的价格,我必须在ShoeLibrary类和我的方法中更新它们。我该怎么做才能使方法中的列表从我的ShoeLibrary类中的数组列表中获取值。
请注意。我有另一个名为Shoes的类,它在ShoeLibrary类中有数组列表的setter和getter。
我尝试过创建以下方法但似乎无法将值分配给方法中的shoePrices列表。
public Double[] getShoePrices() {
Double[] prices = new Double[shoes.size()];
for (int index = 0; index < shoes.size(); index++) {
prices[index] = shoes.get(index).getShoePrice();
}
return prices;
}
我是java的新手,所以提前感谢。
更新 我在我的setShoePrice方法所在的类中使用它:
public Double[] getShoePrice(){
ShoeLibrary s = new ShoeLibrary();
Double prices[] = s.getShoePrices();
return prices;
}
对于方法中的arraylist我这样做如下:
Double[] shoesPrices = {getShoePrice()};
答案 0 :(得分:0)
这是你在setShoePrice
方法中所做的:
通过这种方式,您可以保持鞋价两次(一个在鞋库中,另一个在double[]
数组中。由于这个原因,如果在库中更新鞋价,您的阵列仍然保持陈旧副本,因此,它返回旧价格。
修复方法是删除使用double[]
数组并直接从库中获取价格,例如:
public Double getShoePrice(int index){
if(index >= shoes.size()){
throw new IllegalArgumentException("Invalid index");
}
return shoes.get(index).getPrice();
}
答案 1 :(得分:0)
尝试替换它:
Double[] shoesPrices = {getShoePrice()};
用这个:
Double[] shoesPrices = getShoePrice();