int с = rand.nextInt(26) + 'a'; printnb((char)c + ", " + с + ": "); switch(c) {
case 'a': case 'e': case * i": case 'о':
case 'u': рппи"гласная"); break;
case 'y':
case V: print ("Условно гласная"); break;
default: рппи"согласная");
}
}
}
} /* Output: y, 121: Условно гласная n, 110: согласная z, 122: согласная
b, 98: согласная
г, 114: согласная n, 110: согласная
у. 121: Условно гласная
д. 103: согласная
c. 99: согласная f, 102: согласная о, 111: гласная
w, 119: Условно гласная z. 122: согласная
*///:-
Так как метод Random.nextlnt(26) генерирует значение между 0 и 26, для получения символа нижнего регистра остается прибавить смещение 'а'. Символы в апострофах в секциях case также представляют собой целочисленные значения, используемые для сравнения.
Обратите внимание на «стопки» секций case, обеспечивающие возможность множественного сравнения для одной части кода. Будьте начеку и не забывайте добавлять команду break после каждой секции case, иначе программа просто перейдет к выполнению следующей секции case. В команде
int с = rand.nextInt(26) + 'а',
метод rand.nextlnt() выдает случайное число int от 0 до 25, к которому затем прибавляется значение 'а'. Это означает, что символ а автоматически преобразуется к типу int для выполнения сложения.
Чтобы вывести с в символьном виде, его необходимо преобразовать к типу char; в противном случае значение будет выведено в числовом виде.
Резюме
В этой главе завершается описание основных конструкций, присутствующих почти во всех языках программирования: вычислений, приоритета операторов, приведения типов, условных конструкций и циклов. Теперь можно сделать следующий шаг на пути к миру объектно-ориентированного программирования. Следующая глава ответит на важные вопросы об инициализации объектов и завершении их жизненного циьсла, после чего мы перейдем к важнейшей концепции сокрытия реализации.
Инициализация и завершение
Основные проблемы с безопасностью относятся к
В С++ появилось понятие
Конструктор гарантирует инициализацию