Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 14.08.2011
Сообщений: 13

Пример из Книги Б.Эккеля (не могу разобраться)

14.08.2011, 17:32. Показов 1779. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Только начал изучать язык по книге этого автора. Наткнулся на пример по параграфу switch, программа, генерирующая случайную букву и определяющая, является ли она гласной или согласной. И мой разум застопорило:
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
//: c03:VowelsAndConsonants.java
// Демонстрация инструкции switch.
 
public class VowelsAndConsonants {
  public static void main(String[] args) {
    for(int i = 0; i < 100; i++) {
      char c = (char)(Math.random() * 26 + 'a');
      System.out.print(c + ": ");
      switch(c) {
      case 'a':
      case 'e':
      case 'i':
      case 'o':
      case 'u':
                System.out.println("vowel");
                break;
      case 'y':
      case 'w':
                System.out.println(
                  "Sometimes a vowel");
                break;
      default:
                System.out.println("consonant");
      }
    }
  }
} ///:~
Как в этом месте
Java
1
char c = (char)(Math.random() * 26 + 'a');
генерируется буква, да еще и случайная?
Если поконкретнее: почему именно Math.random() ? зачем конкретно множить на 26 (автор объясняет это количеством букв, но мне всеравно не понятно)? и зачем вообще + 'a'
Если Math.random() генерирует рандомное число в пределах от 0 до 1, допустим, у нас получилось 0.02. Умножаем его на 26, получаем 0.52. Как прибавление к этому 'a' (и в каком смысле прибавление) и приведение всего этого в типу char дайт нам в результате какой-то символ?
Спасибо заренее за любую помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2011, 17:32
Ответы с готовыми решениями:

Разобраться в коде (пример из книги)
Создание игры Sudoku из книги Hello, Android – Ed Burnette. Есть класс Game, где прописана вся логика игры и условия выигрыша. Не могу...

Упражнения из книги Брюса Эккеля
Вечер добрый, форумчане. Не найдется ли у кого сделанных упражнений по книге Брюса Эккеля &quot;Философия С++&quot; Том 1 и Том 2? ...

Не понял строчку из программы RTTI из книги Брюса Эккеля
В главе &quot;Type Information&quot; книги Брюса Эккеля &quot;Thinking in Java&quot; есть пример: //: typeinfo/pets/PetCreator.java // Creates random...

3
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
14.08.2011, 18:05
shur, Math.random() дает некоторое число от 0 до 1 затем оно умножается на 26, так как всего 26 букв латинского алфавита, поэтому мы получаем число от 0 до 25. Но в таблице символов, например, в ASCII символы алфавита идут не с первого символа, а где-то с середины, поэтому плюсуется смещение буквы 'а'.
1
0 / 0 / 1
Регистрация: 14.08.2011
Сообщений: 13
14.08.2011, 18:45  [ТС]
То-есть, как я понял, если указать вместо 'a' другое значение, например, '~', то результат вычисления будет равен '~' или любому из следующих 25 символов, идущих в таблице символов после него?

Добавлено через 18 минут
Большое спасибо.
В книге этот момент объясняется так:
Так как Math.random( ) генерирует значения в пределах от 0 до 1, вам необходимо только умножить его на верхний предел границы чисел, которые вы хотите производить (26 для букв алфавита) и прибавлять смещение для установки нижней границы.
А поскольку ранее в книге ни о чем подобном речи не было, то смещение выглядит мистически и непонятно. Момент не для начинающих...
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
14.08.2011, 18:52
да, ну кстати можешь поэксперементировать, только если берется последний знак, то результат может быть непредсказуемым
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.08.2011, 18:52
Помогаю со студенческими работами здесь

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

Не могу разобраться с примером из книги
Здраствуйте. Изучаю книгу Энди Харриса &quot;РНР и MySQl для начинающих&quot;. В примере, имеется два файла. 1-й HTML: &lt;html&gt; ...

Пример из учебника. Не могу разобраться.
Читаю книжку, не могу понять одно упражнение оттуда. Кого не затруднит, разъясните пожалуйста. Самое начало ООП, глава посвящена классам и...

Не могу разобраться с примером из книги Липпмана
#include &lt;iostream&gt; #include &lt;string&gt; using std::string; string &amp; shorterString(string &amp;s1, string &amp;s2) { auto &amp;r =...

Не могу разобраться с позиционированием изображений (пример внутри)
Здравствуйте! Выкладываю пример своей работы Не могу разобраться с позиционированием. До этого была проблема с отображением в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru