2016-04-01 14 views
1

私はこのプログラムに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; 
    } 
} 

これにより、第2のクラスである:

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メソッドにありますが、私はそれを修正する方法がわかりません。あなたがaddiを呼び出している

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

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

    } 

毎回0

FIX1にリセットを取得している::代わりlistを持ってするには:

+0

ArrayList代わりの配列を作成して、より良い私たちはいくつかの出力を見てもいいですか? – camelCoder

+0

これは私が得た出力です:4.52 4.52 –

+0

しかし、それは異なる数字でなければなりません。 –

答えて

0

問題は、あなたのAddメソッドである、事前にありがとうarrayです。 Arrayには、回避したいかもしれない修正サイズが付属しています。

+0

どうすれば修正できますか? –

+0

私は答えを更新しました。 – Helios

0

追加しながら、あなたが代わりに直接

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

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

    } 

使用

のように、新しいアイテム

を追加できるように、私は、カート内の現在の項目を持つグローバル変数(noOfItems)を維持することをお勧め

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

または第2の方法

そのオブジェクト

+0

私はまだ学習していないので、この宿題のためにArrayListを使うことはできません。あなたが最初に使ったものについては、私のために/ –

+0

のadd()メソッドを使って、 'int noOfitems = 0;'という変数をクラスに宣言してください – Gaurav

関連する問題