2016-04-01 21 views
1

Bu program için 3 tane kurs var. Alışverişten sonra ürünlerin toplam fiyatını yazdırmak istiyorum, ancak çıktıyla ilgili bir sorun var. Alışveriş her zaman öğe sayısında farklı olsa da, çıktı hepsi aynıdır. Tamir etmeme yardım eder misin?Öğe dizeye eklenemiyor

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; 

    } 

} 

Bu üçüncü sınıftır:

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(); 

} 
} 

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; 
    } 
} 

Bu ikinci sınıftır:

Bu birinci sınıf: Burada

benim kodudur

Sanırım Sorun, ekleme yöntemindedir, ancak nasıl düzelteceğimi bilmiyorum.

fix1 :: yerine list sahip olmak size addi aradığınız

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

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

    } 

Everytime 0'a reset oluyor:

şimdiden teşekkürler

+0

bazı çıkışında bir göz alabilir oluşturmak için? – camelCoder

+0

Aldığım çıktı bu: 4.52 4.52 –

+0

Farklı sayılar olsa da. –

cevap

0

Sorun sizin Add yönteminde ise array. Array, kaçınmak isteyebileceğiniz bir düzeltme boyutuyla birlikte gelir.

+0

Peki, nasıl düzeltmeliyim? –

+0

Cevabı güncelledim. – Helios

0

ben sepetinde geçerli öğe ile global bir değişken (noOfItems), korumak için önermek Yani bu doğrudan yeni et

Yani yerine

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

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

    } 

kullanımını ekleyebilir eklerken

Veya Daha iyi

onun ArrayList yerine nesnenin dizinin

+0

Henüz öğrenmediğim için bu ödev için ArrayList kullanamıyorum. İlk kullandığınız için, bana/ –

+0

benim add() yöntemimi kullanıp, int noOfitems = 0; – Gaurav