Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 5

Перечисление значений

04.01.2013, 16:24. Показов 2660. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Учусь по книге К.Серра Б.Бейтс - "изучаем Java". Дошел до одного из заданий по зацикливанию, называется "Beer Song". Так вот я решил улучшить предложенный там код, но для этого мне нужно было перечислять значения. Как это сделать, к сожелению, в интернете я не нашел и пришлось делать так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
public class BeerSong {
 
    public static void main (String[] args){
        
        int beerNum = 99;
        String word = "бутылок";
        
        while (beerNum > 0) {
            
            if (beerNum == 2) {
                word = "бутылки";
            }if (beerNum == 3) {
                word = "бутылки";
            }if (beerNum == 4) {
                word = "бутылки";
            }if (beerNum == 22) {
                word = "бутылки";
            }if (beerNum == 23) {
                word = "бутылки";
            }if (beerNum == 24) {
                word = "бутылки";
            }if (beerNum == 32) {
                word = "бутылки";
            }if (beerNum == 33) {
                word = "бутылки";
            }if (beerNum == 34) {
                word = "бутылки";
            }if (beerNum == 42) {
                word = "бутылки";
            }if (beerNum == 43) {
                word = "бутылки";
            }if (beerNum == 44) {
                word = "бутылки";
            }if (beerNum == 52) {
                word = "бутылки";
            }if (beerNum == 53) {
                word = "бутылки";
            }if (beerNum == 54) {
                word = "бутылки";
            }if (beerNum == 62) {
                word = "бутылки";
            }if (beerNum == 63) {
                word = "бутылки";
            }if (beerNum == 64) {
                word = "бутылки";
            }if (beerNum == 72) {
                word = "бутылки";
            }if (beerNum == 73) {
                word = "бутылки";
            }if (beerNum == 74) {
                word = "бутылки";
            }if (beerNum == 82) {
                word = "бутылки";
            }if (beerNum == 83) {
                word = "бутылки";
            }if (beerNum == 84) {
                word = "бутылки";
            }if (beerNum == 92) {
                word = "бутылки";
            }if (beerNum == 93) {
                word = "бутылки";
            }if (beerNum == 94) {
                word = "бутылки";
            }
            
            if (beerNum == 1) {
                word = "бутылка";
            }if (beerNum == 21) {
                word = "бутылка";
            }if (beerNum == 31) {
                word = "бутылка";
            }if (beerNum == 41) {
                word = "бутылка";
            }if (beerNum == 51) {
                word = "бутылка";
            }if (beerNum == 61) {
                word = "бутылка";
            }if (beerNum == 71) {
                word = "бутылка";
            }if (beerNum == 81) {
                word = "бутылка";
            }if (beerNum == 91) {
                word = "бутылка";
        }
            if (beerNum == 99){
            System.out.println(beerNum + " " + word + " пива на стене.");
            }
        System.out.println("Возьми одну,");
        System.out.println("Пусти по кругу.");
        
        beerNum = beerNum - 1;
        
        
        if (beerNum > 0) {
            System.out.println(beerNum + " " + word + " пива на стене.");
        }
        else {
            System.out.println("Нет бутылок пива на стене");
        }
    }
}
}
Собственно вопрос, можно ли перечислять значения, если да то как это сделать?
P.S. Извините если вопрос глупый или уже был.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.01.2013, 16:24
Ответы с готовыми решениями:

Как добавить перечисление в List
//есть интерфейс interface Card extends Comparable <Card>{ public enum Suit{ DIAMONDS (1, "Diamonds"), CLUBS ...

Перечисление значений
Здравствуйте, подскажите, пожалуйста, как сделать так, что бы содержимое словаря писалось максимальное количество разных комбинаций для...

Перечисление значений через запятую
Добрый день. Подскажите, есть у меня примерчик в котором уникальные значения выискивает из столбца, но когда он выискивает он новый...

6
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
04.01.2013, 19:46
а перечисление значений с воздуха сами не возьмутся по этому их нужно писать самостоятельно, особенно в целях учебы!
Посмотрите на мой вариант, разберетесь или комментировать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class BeerSong {
    
    static String getEnd (int numB) {
        if ((numB - 1) % 10 == 0) {
            return "ка";
        } else {
            return "ки";
        }
    }
 
    public static void main (String[] args){
        
        int beerNum = 99;
        String word = "бутыл";
        
        
        while (beerNum > 0) {
            
            System.out.println(beerNum + " " + word + getEnd(beerNum) + " пива на столе.");  
            System.out.println("Возьми одну,");
            System.out.println("Пусти по кругу.");
        
            beerNum = beerNum - 1;           
        }
    System.out.println("Нет бутылок пива на столе");
    
    }    
    
}
p.s. перенес пиво со стены на стол, если вы не против)
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 5
04.01.2013, 20:09  [ТС]
Хотелось бы комментария к этим строчкам:
Java
1
2
3
4
5
6
static String getEnd (int numB) {
        if ((numB - 1) % 10 == 0) {
            return "ка";
        } else {
            return "ки";
        }
P.S. А нсчет стены я не виноват, это книгу так перевели)
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
04.01.2013, 20:30
в первую очередь это метод
1. Он возвращает текст, который мы будем добавлять "в конец" слова "бутыл"... в нашем случае окончание или "ка" или "ки"
2. На вход принимаем сколько бутылок (переменная beerNum) в int numB
3. по формуле трактуем так "если от общего количество бутылок отнять единицу И данное число будет делиться на 10 БЕЗ остатка - значит окончание дописывать будем "ка", всё иначе - "ки". Тойсь данная формула определяет числа такие как 11, 21, 31, 41, 51 ..... 91 (у вас в примере просто было, что все окончания "ки" равнялись таким числам, из этого и формула)
Java
1
2
3
4
5
6
static String getEnd (int numB) {
        if ((numB - 1) % 10 == 0) {
            return "ка";
        } else {
            return "ки";
        }
0
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 5
04.01.2013, 21:20  [ТС]
В вашем коде примерно такой же изъян как и в книге. Например: 99 бутылки пива на столе. Мы же не говорим 99 бутылки, а именно это я и хотел исправить.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
05.01.2013, 02:58
открою вам секрет. Данную книгу я знаю, лежит на столе, с этим примером тоже сталкивался буквально в самом начале, тоже хотел модифицировать, но тут есть одно большое "но"... в английском варианте пример элементарный, чего не сказать про русскоязычный вариант (не скажу что супер сложный, но не в начале обучения). Боюсь если напишу универсальное решение - вас это только вас запутает окончательно. На будущее вернитесь к примеру, напишите на бумаге количество бутыл(ка\ки\ок) и посмотрите закономерность, всё что сходится сведите к одной формуле, что сходится по иному - в другую проверку, остальное - третье. Мой вам совет - далее по книге есть отличные примеры, лучше пока зацикливайтесь на них, а "бутылки со стены" никуда не денутся
0
0 / 0 / 0
Регистрация: 10.10.2017
Сообщений: 1
10.10.2017, 16:02
Немного улучшил выложенный пример с точки зрения зрения граматики. Навряд ли идеальный с точки зрения опытных разработчиков.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class BeerSong {
    
    static String getEnd (int numB) {
        
        int n;      
        n = numB%10;
           
           if (numB == 11 || numB == 12 || numB == 13 || numB == 14){
               return "ок";
           }
           if (n == 1){
               return "ка";
           }
           if (n == 2 || n == 3 || n == 4){
               return "ки";
           }
           
           return "ок";
    }
 
    public static void main (String[] args){
        
        int beerNum = 99;
        String word = "бутыл";
                 
        while (beerNum > 0) {
            
            System.out.println(beerNum + " " + word + getEnd(beerNum) + " пива на стене."); 
            System.out.println("Возьми одну,");
            System.out.println("Пусти по кругу.");
        
            beerNum = beerNum - 1;
            
            if (beerNum > 0){           
                System.out.println(beerNum + " " + word + getEnd(beerNum) + " пива на стене.");
                System.out.println("");
            } else {
                System.out.println("Нет бутылок пива на столе");
            }
        }
    }    
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2017, 16:02
Помогаю со студенческими работами здесь

Enum перечисление переменных и присвоение им значений
добрый день, работаю в среде qt, застала проблема в оптимизации кода, хочу перечислить переменные и присвоить им значение из списка ...

Найти перечисление, у которого наибольшее количество значений
Доброго времени суток есть дали такое вот задание на домашку голову себе сломал Первое Найти перечисление, у которого наибольшее...

Перечисление значений строк через запятую с запросе с группировкой
Форумчане, доброго времени суток! Есть запрос, в котором сделана попытка перечислить значения строк через запятую. Попытка- т.к....

Перечисление
Ребят, возможно ли обратиться к любому элементу перечисления по его номеру? например, есть перечисление значения всех карт в колоде ...

Перечисление в BC++
В русском языке как, правило после букв Ж, Ч, Ш, Щ, пишется И, А, У, а не Ы, Я, Ю, (за исключением слов ЖЮРИ, БРОШЮРА, ПАРАШЮТ). Проверить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru