2015-05-22 2 views
0
enum ChineseMenu { 

    SOUP_CHICKEN(22), SOUP_VEG(32), 

    NOODLES_NONVEG(23), NOODLES_VEG(55), 

    RICE_NONVEG(43), RICE_VEG(66); 

    private int value; 

    ChineseMenu(int price) { 
     this.value = price; 
    } 

    public int getCost() { 
     return value; 
    } 
} 




class ChineseDemo { 

    public static void main(String[] args) { 
     ChineseMenu[] chineseArray = ChineseMenu.values(); 
     for (ChineseMenu menu : chineseArray) { 
      System.out.println("The price of " + menu + " is ");//i want to add the price value 
     } 

    } 
} 

В приведенном выше коде я хочу добавить значение цены после «есть». Я даже попробовал объявить метод, а затем называть то же самое. Но это дает ошибку, что статический тип не может относиться к не статическим переменнымДоступ к переменным/методам перечисления

+0

Ваш вопрос сбивает с толку. Вы запрашиваете решение для -1> «В приведенном выше коде я хочу добавить значение цены после« is »или« 2>, вы получаете ошибку - «Но это дает ошибку, которую статический тип не может ссылаться на нестатические переменные». Если ваша проблема равна 1, то kocko уже предоставил решение. И для второго, я не вижу никакой проблемы, которая вызывает ошибку 2. – Bikku

+0

Это было 1. И это оказалось полезным. Этот метод перечисления является слишком мощным, чем я думал. Может сделать жизнь проще в java. –

ответ

0

В приведенном выше коде я хочу, чтобы добавить значение цены после того, как «это»

Судя по вышеуказанной линии от вашего вопроса и тот факт, что ваш оператор печати говорит The price of menu is, это выглядит, как вы хотите, чтобы напечатать общую стоимость китайского меню:

Вы можете создать переменную total, которая содержит общую цену:

public static void main(String[] args) { 
     ChineseMenu[] chineseArray = ChineseMenu.values(); 
     int total = 0; 
     for (ChineseMenu menu : chineseArray) { 
      total+=menu.getCost(); 

     } 
     System.out.println("The price of Chinese menu is "+total); 

} 
+0

Я не уверен, где вы получаете то, что он хочет, всего, вместо каждого отдельного элемента. – ach

+0

@ach Это была моя интерпретация того, что хочет OP, как уже объяснялось в моем ответе. Независимо от того, хочет ли OP тотал или нет, этот ответ демонстрирует, как вызвать метод из перечисления. (читайте 'm.getCost()'). Это Win-Win, ИМО. – CKing

1

Как об этом один:

System.out.println("The price of " + menu + " is " + menu.getCost()); 
+0

Это работало! Спасибо дружище. Ты решаешь мою большую проблему. :) –