将ArrayList从方法传递到同一个类中的另一个?

时间:2018-01-06 10:51:52

标签: java arraylist

我正在为一家服装店编写一个小项目。 在我的一个班级中,将传递2个变量(项目& 价格) 每次用户选择一个 某些产品...

他们将被传递到两种不同的方法..

添加,添加价格

我试图拿出第一个已经添加到购物车中的所有衣服的阵列,另一个拿着每个项目的所有价格

每个项目及其价格都有类似的索引,因为它们是同时添加的......

现在......我的问题是我确实希望将这两个 ArrayLists 传递给我的方法“ PrintRecipt()”,这样我就能够打印物品及其价格在他们面前...

代码: -

package clothesshop;
import java.util.ArrayList;
public class Cart {
void cartAddi(String item){//adding a certain item will be passed here
    ArrayList<String> clothes = new ArrayList<String>(5);
    clothes.add(item); 
}
int cartAddp(int price){//along with its price to be added to the cart
    ArrayList<Integer> cost = new ArrayList<Integer>(5);
    cost.add(price); int TotalP=0;
    for (int total : cost) {
       TotalP = TotalP  + total; //total price
    }
    return TotalP;
}
void PrintRecipt(){ 
    //taking both ArrayLists and printing them here?
   }  
}

3 个答案:

答案 0 :(得分:2)

为什么要在其函数中声明两个ArrayLists? 将它们作为字段成员,因此您可以从其他函数访问它们,当然,在您编写的代码中,您不能添加多个项目,因为每个add都会创建一个新的ArrayList并且没有内存过去的车加了。 将它们设为字段,并在添加函数中添加到所需特定数组的字段。 在您询问的函数中,只需对ArrayList大小执行for循环,并在每次迭代中打印第一个数组的第i个元素和第二个数组的第i个元素。

答案 1 :(得分:1)

package clothesshop;
import java.util.ArrayList;
public class Cart {
    private ArrayList<String> clothes = new ArrayList<String>(5);
    private ArrayList<Integer> costs = new ArrayList<Integer>(5);
    int cartAdd(String item, int price){//adding a certain item will be passed here
        clothes.add(item); 
        costs.add(price); 
        int TotalP=0;
        for (int total : costs) {
            TotalP = TotalP  + total; //total price
        }
        return TotalP;
    }

    void PrintRecipt() {
        for (int i=0; i<clothes.length; i++) { 
            System.out.println(clothes.get(i) + " at " + costs.get(i));
        }
    }  
}

答案 2 :(得分:1)

您可以使用单个HashMap存储项目的价格。您需要将其声明为实例变量。然后在printRecipt()内部,简单地遍历hashmap条目并根据您想要的格式打印值。

package clothesshop;
import java.util.ArrayList;
public class Cart {
        private HashMap<String, int> items = new HashMap<String, int>(5);
    int cartAdd(String item, int price){//adding a certain item will be passed here
        items.add(item, price); 
        int TotalP=0;
        for (int total : costs) {
            TotalP = TotalP  + total; //total price
        }
        return TotalP;
    }

    void PrintRecipt() {

    Iterator it = items.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        System.out.println(pair.getKey() + " at " + pair.getValue());

       }

    }  
}