2011-12-13 21 views
0

私は別のクラスには見えないメソッドに問題があり、それはわかりません。 Merchandiseリスト(Merchandiseはクラス)を持つShopping_Basketクラスがあります。 MerchandiseクラスのgetItemCostメソッドに到達するために、Shopping_basketクラスのMerchandiseリストを取得しようとしています。しかし、私は私が間違っているかを把握することはできません...方法が表示されていないというエラーが表示されます。メソッドが表示されないヘルプ? Java

public class Shopping_Basket { 
    private List<Merchandise> basket; 
    public List<Merchandise> getList() { 
    return basket; 
} 

    public Shopping_Basket() { 
    basket = new ArrayList<Merchandise>(); 
    } 
    public double getTotalCost() { 
    double j = 0; 
    for (int i = 0; i < this.getList().size(); i++){    
     j += basket.get(i).getItemCost(); 
    } 
    return j; 
} 

ここで商品のクラスがあります:

public class Merchandise { 
private String item_name; 

private int item_cost; 

public Merchandise(String name, int cost) { 
    this.item_name = name; 
    this.item_cost = cost; 
} 
public String getItemName() { 
    return item_name; 
} 

public double getItemCost() { 
    return item_cost; 
} 

getTotalCost()メソッドでそうエラーそれはgetItemCost()が表示されていないと言う...ヘルプ?

+2

このメソッドにアクセスする必要があります。すべてのものをきれいにするようにしてください。 – NPE

+1

スタックトレースを送信してください。 – Paul

+2

これはあなたの問題の原因ではありませんが、 'Merchandise'では' item_cost'を 'int'として宣言し、戻り値の型が' double'のメソッドから返します。 – Paul

答えて

2

あなたのコードは結構です、そして実際にコンパイルし、罰金を実行。下記を参照してください、あなたは右のすべてをした場合のクロスチェック(私はあなたのコードを実行するためにmain()方法を追加した):

$ cat > Merchandise.java 
public class Merchandise { 

     private String item_name; 

     private int item_cost; 

     public Merchandise(String name, int cost) { 
       this.item_name = name; 
       this.item_cost = cost; 
     } 

     public String getItemName() { 
       return item_name; 
     } 

     public double getItemCost() { 
       return item_cost; 
     } 
} 

$ cat > Shopping_Basket.java 
import java.util.ArrayList; 
import java.util.List; 

public class Shopping_Basket { 

     private List<Merchandise> basket; 

     public List<Merchandise> getList() { 
       return basket; 
     } 

     public Shopping_Basket() { 
       basket = new ArrayList<Merchandise>(); 
     } 

     public double getTotalCost() { 
       double j = 0; 
       for (int i = 0; i < this.getList().size(); i++) { 
         j += basket.get(i).getItemCost(); 
       } 
       return j; 
     } 

     public static void main(String[] args) { 
       Shopping_Basket sb = new Shopping_Basket(); 
       System.out.println(sb.getTotalCost()); 

     } 

} 

$ javac Shopping_Basket.java 

$ java Shopping_Basket 
0.0 

だから、私は言った、あなたが見ることができるように、コードが良好であるとして。コンパイラのために、少なくとも物事のカップルが指摘してありますので:

  • Merchandiseでは、item_costintですが、何かに変更する必要がありますあなたのクラスShopping_Basketdouble
  • 名前を返しますgetItemCost() like ShoppingBasket
+0

それはダブルとintの問題だった!みんなありがとう – QuackMan245

1

私は間違って見ていない、このコードはコンパイルする必要があり、私のコンピュータで実際にコンパイルする必要があります。 IDEでプロジェクトをクリーンアップし、プロジェクト全体をもう一度コンパイルしてください。

+3

これは本当に答えよりもコメントです。 – Paul

0

クラスは正しいです。このメソッドは公開されているため、表示されます。 クラスパスの設定やクラスのインポートに問題があるかもしれません。

public class Merchandise { 
private String item_name; 

private int item_cost; 

public Merchandise(String name, int cost) { 
    this.item_name = name; 
    this.item_cost = cost; 
} 

public String getItemName() { 
    return item_name; 
} 

public double getItemCost() { 
    return item_cost; 
} 

}

import java.util.ArrayList; 

インポートjava.util.Listに。

public class Shopping_Basket { プライベートリストバスケット;

public List<Merchandise> getList() { 
    return basket; 
} 

public Shopping_Basket() { 
basket = new ArrayList<Merchandise>(); 

}

public double getTotalCost() { 
    double j = 0; 
    for (int i = 0; i < this.getList().size(); i++) { 
     j += basket.get(i).getItemCost(); 
    } 
    return j; 
} 

public void addMerchandise(Merchandise m){ 
    basket.add(m); 
} 

public static void main(String[] args) { 
    Merchandise m1 = new Merchandise("prova", 11); 
    Merchandise m2 = new Merchandise("prova2", 13); 

    Shopping_Basket sb = new Shopping_Basket(); 

    sb.addMerchandise(m1); 
    sb.addMerchandise(m2); 

    System.out.println(sb.getTotalCost()); 
} 

}

関連する問題