2011-12-24 6 views
1

私はどのように各列挙のすべての値を取得し、すべて1つの変数で一緒に追加することを理解しようとしています。私のコード。Javaどのように各列挙のすべての値の合計を取得する

enum Junk { 

Wrapper(0), 
SilverCoins(150), 
Dresser(250), 
Sofa(250), 
ChippedBat(0), 
BrokenMicrowave(0), 
SilverWare(35), 
Newspapers(0), 
Book(20), 
Clothes(60), 
Plates(40), 
Cups(25), 
DiningTable(200), 
Chair(30), 
BoxOfPaper(10), 
BucketofPaint(10), 
Watch(30); 

} 

各列挙型の値をすべて追加して追加する方法を知りたいと思います。

答えて

1

後は、あなたが期待するあなたの完全なコードです。

package enumtest; 

enum Junk 
{ 
    Wrapper(0), 
    SilverCoins(150), 
    Dresser(250), 
    Sofa(250), 
    ChippedBat(0), 
    BrokenMicrowave(0), 
    SilverWare(35), 
    Newspapers(0), 
    Book(20), 
    Clothes(60), 
    Plates(40), 
    Cups(25), 
    DiningTable(200), 
    Chair(30), 
    BoxOfPaper(10), 
    BucketofPaint(10), 
    Watch(30); 

    private int value; 

    private Junk(int value) 
    { 
     this.value=value; 
    } 

    public int getValue() 
    { 
     return(value); 
    } 
} 

final public class Main 
{ 
    public static void main(String...args) 
    { 
     int sum=0; 

     for(Junk o:Junk.values()) 
     { 
      sum+=o.getValue(); 
     } 

     System.out.println("sum = "+sum); 
    } 
} 

あなたはそれを試してみる場合は、コンソールにsum = 1110を表示していました。

+0

* normalクラス*のコンストラクタにアクセス修飾子が指定されていない場合、コンストラクタには* defaultアクセス*があります。 'enum type'のコンストラクタにアクセス修飾子が指定されていない場合、コンストラクタは** private **です。 'enum型'のコンストラクタが** public **または** protected **と宣言されている場合、コンパイル時エラーです。 ***あなたが明示的に宣言していなくても、 'enum型'のコンストラクタは常にプライベートです*** – Lion

0

まず、整数値にアクセスするにはアクセサメソッドが必要です。言って、.getInt()。これを手に入れたら、次のようなことをしてください:

int sum = 0; 

for (final Junk junk: Junk.values()) 
    sum += junk.getInt(); 

// Now sum contains what you want 

このコードではオーバーフローはチェックされませんが、あなたはそれを知ります。

0
int total=0; 

for (Junk j: Junk.values()) { 
//retrieve each of the values and add it to total 
} 
1
enum Junk { 

    Wrapper(0), 
    SilverCoins(150), 
    Dresser(250), 
    Sofa(250), 
    ChippedBat(0), 
    BrokenMicrowave(0), 
    SilverWare(35), 
    Newspapers(0), 
    Book(20), 
    Clothes(60), 
    Plates(40), 
    Cups(25), 
    DiningTable(200), 
    Chair(30), 
    BoxOfPaper(10), 
    BucketofPaint(10), 
    Watch(30); 

    private int value; 

    private Junk(int value){ 
     this.value = value; 
    } 

    public int getValue(){ 
     return value; 
    } 

} 

GET列挙値:

int sofaValue = Junk.Sofa.getValue(); 

追加コード:主に

int junkSum = 0; 

for(Junk junk : junk.values()){ 
    junkSum += junk.getValue(); 
} 
1
public class Brand{ 
    private static int sum; 

    public static int getSum() { 
     return sum; 
    } 

    public enum Junk 
    { 
     Wrapper(0), 
     SilverCoins(150), 
     Dresser(250), 
     Sofa(250), 
     ChippedBat(0), 
     BrokenMicrowave(0), 
     SilverWare(35), 
     Newspapers(0), 
     Book(20), 
     Clothes(60), 
     Plates(40), 
     Cups(25), 
     DiningTable(200), 
     Chair(30), 
     BoxOfPaper(10), 
     BucketofPaint(10), 
     Watch(30); 
     private int value; 

     private Junk (int value){ 
      this.value = value; 
      sum = sum + value; 
     } 

     public int getValue(){ 
      return value; 
     } 
    } 
} 

System.out.println(Brand.Junk .BoxOfPaper); 
System.out.println("sum:"+Brand.getSum()); 

OUTPUT:

BoxOfPaper 
sum:1110 
関連する問題