Задание на зачет (практическая часть)
Создание программы «Угадай название столицы»
Концепция программы:
В качестве основы для программы мы используем базу данных, в которой информация сохраняется в простом текстовом файле. Информация сохраняется в виде связки «название столицы» - «название государства», которая затем извлекается и опрашивается программой.
В общем виде ход выполнения программы представляется следующим:
-
Программа открывает файл базы данных и определяет, какое количество записей содержится в нем.
-
Затем программа выбирает одну из записей базы данных (выбор должен производиться случайным образом) и считывает название государства и его столицы.
-
В заключение программа просит пользователя указать название столицы данного государства, считывает указанное пользователем название и проверяет, указал ли пользователь правильный ответ, выводя затем правильное название столицы данного государства.
Пример файла:
4
США Вашингтон
Япония Токио
Германия Берлин
Франция Париж
Недостающие знания:
-
Как, случайным образом, выбрать запись в базе данных.
Одной из наших задач является встроить в программу механизм случайного выбора вопросов. Для этих целей необходимо случайным образом выбирать численные значения в диапазоне от 1 до общего числа записей в базе данных (содержится в переменной NumRecords, в нашем случае – 4). Для создания случайных значений чисел в пакете java.util существует класс Random. Мы создаем экземпляр этого класса для доступа к методу nextInt(n), который возвращает случайное значение в диапазоне от 0 до n (включительно). В связи с этим в качестве аргумента методу nextInt() передается значение NumRecords + 1, что позволяет нам выбрать также и последнюю запись в базе данных. Т.к. значение 0 не представляет для нас никакого интереса, оно отбрасывается – и случайное значение генерируется вновь. Для этого используется цикл while, выход из которого производится тогда, когда получено случайное значение, отличное от нуля.
Random randomVar = new Random();
int randomVal;
while (true)
{
randomVal = randomVar.nextInt (NumRecords + 1);
if (randomVal != 0)
break;
}
2. Как решить задачу извлечения из считанной из файла строки названий страны и ее столицы (которые, к примеру, присвоим переменным strLand и strCapital).
В пакете java.util имеется класс StringTokenizer, который идеально подходит для этих целей. Сначала создаем экземпляр данного класса и передаем конструктору строку, которую необходимо разложить на составляющие элементы. Затем, вызывая метод nextToken(), мы последовательно получаем составляющие строку слова (лексемы).
StringTokenizer st = new StringTokenizer (stringVar);
String strLand = st.nextToken ();
String strCapital = st.nextToken ();
