Еще один пример перечисления

Прежде чем двигаться дальше, рассмотрим еще один пример применения enum. В главе 9 создавалась программа для автоматического принятия решений. В этой версии переменные, называемые NO, YES, MAYBE, LATER, SOON и NEVER, были объявлены в интерфейсе и использованы для представления возможных ответов. Хотя в таком подходе нет ничего технологически неверного, применение перечислений — более подходящее решение. Здесь представлена усовершенствованная версия этой программы, которая использует enum по имени Answers для представления ответов. Вы должны сравнить эту версию с оригинальной из главы 9.

// Усовершенствованная версия программы принятия решений
//из главы 9. В этой версии для представления
// используется enum, а не переменные экземпляра.
import java.util.Random;
// Перечисление возможных ответов. enum Answers {
NO, YES, MAYBE, LATER, SOON, NEVER
}
class Question {
Random rand = new Random();
Answers ask() {
int prob = (int)
(100 * rand.nextDouble () ) ;
if (prob < 15)
return Answers.MAYBE; // 15%
else if (prob < 30)
return Answers.NO; // 15%
else if (prob < 60)
return Answers.YES; // 30%
else if (prob < 75)
return Answers.LATER; // 15%
else if (prob < 98)
return Answers.SOON; // 13%
else
return Answers.NEVER; // 2%
}
}
class AskMe {
static void answer(Answers result) {
switch(result) {
case NO:
System.out.println("Нет");
break; case YES:
System.out.println("Да");
break; case MAYBE:
System.out.println("Возможно");
break; case LATER:
System.out.println("Позднее");
break; case"SOON:
System.out.println("Вскоре");
break; case NEVER:
System.out.println("Никогда");
break;
}
}
public static void main(String args[]) {
Question q = new Question();
answer(q.ask());
answer(q.ask());
answer(q.ask());
answer(q.ask());
}
}