2011-12-24 144 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