没有添加到数组中的项目

时间:2016-04-01 05:09:52

标签: java

我有3个课程用于此课程。我想在购物后打印出商品的总价格,但输出有问题。虽然每次购物的商品数量不同,但输出都是一样的。你能帮我解决一下吗?

以下是我的代码:

这是第一堂课:

public class LineItem {
   private String name;
   private int quantity;
   private double pricePerUnit;
   /**
   *
   */
   public LineItem(String name, int quantity, double pricePerUnit) {
      this.name = name;
      this.quantity = quantity;
      this.pricePerUnit = pricePerUnit;             
   }


   public double getCost() {
      return quantity*pricePerUnit;
   }


   public void setQuantity(int newQuantity) {
      quantity=newQuantity;
   }
}

这是第二堂课:

import java.util.ArrayList;
public class ShoppingCart {
   /**
   *
   */
   private LineItem[] item;
   private int check;

   public ShoppingCart() {
      item = new LineItem[10];
      check = 10;
   }




   public void add(LineItem newItem) {
      int i = 0;

      while (item[i] == null && check != 0){
         item[i] = newItem;
         i++;
         check -= check;
      }

   }


   public double getTotalCost() {
      double totalCost = 0.0;

      for(int i=0; i< item.length;i++){
         if(item[i]!=null)
            totalCost += item[i].getCost();
      }
      return totalCost;

  }

}

这是第三堂课:

public class ShoppingCartTester{
   public static void main(String[] args){

      ShoppingCart singleItemCart = new ShoppingCart();
      LineItem item1 = new LineItem("Dove shampoo",1,4.52);
      singleItemCart.add(item1);
      System.out.println(singleItemCart.getTotalCost());

      //
      ShoppingCart typicalCart = new ShoppingCart();
      item1 = new LineItem("Dove shampoo",1,4.52);
      typicalCart.add(item1);
      LineItem item2 = new LineItem("apples",5,10.80);
      typicalCart.add(item2);
      LineItem item3 = new LineItem("avocados",5,20);
      typicalCart.add(item3);
      LineItem item4 = new LineItem("chocolate",1,4.25);
      typicalCart.add(item4);
      LineItem item5 = new LineItem("green onions",3,3.49);
      typicalCart.add(item5);
      System.out.printf("%.2f", typicalCart.getTotalCost());
      System.out.println();

}
}

我认为问题出在add方法中,但我不知道如何修复它。

提前谢谢

2 个答案:

答案 0 :(得分:0)

问题在于您的添加方法:

public void add(LineItem newItem) {
      int i = 0; <--- Problem begins

      while (item[i] == null && check != 0){
         item[i] = newItem;
         i++;
         check -= check;
      }

   }

每当您致电add i时,重置为0。

Fix1 ::拥有list而不是arrayArray附带了您可能希望避免的修复大小。

答案 1 :(得分:0)

我建议使用购物车中的当前商品维护一个全局变量(noOfItems), 这样在添加时您可以直接添加新项目

所以而不是

public void add(LineItem newItem) {
      int i = 0;

      while (item[i] == null && check != 0){
         item[i] = newItem;
         i++;
         check -= check;
      }

   }

使用

public void add(LineItem newItem){
    item[++noOfItems] = newItem;
}

或第二种方式

  

最好创建 ArrayList 而不是对象数组