2011-12-24 96 views
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 class *的構造函數指定訪問修飾符,則構造函數具有* default access *。如果沒有爲'enum類型'的構造函數指定訪問修飾符,則構造函數是** private **。如果「枚舉類型」的構造函數被聲明爲** public **或** protected **,那麼這是一個編譯時錯誤。 ***我的意思是枚舉類型的構造函數總是私有的,即使你沒有明確地聲明它們。 – Lion 2011-12-24 06:43:09

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

} 

獲取枚舉值:

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