Назад | Начало урока | Вперед
Содержание

Глава 6

Задача 6.6 " Всенародные праздники."

Используя хеш-таблицу, создайте программу, позволяющую вводить и сохранять даты всенародных праздников вашей страны для текущего года. С помощью класса Display реализуйте следующую функцию: пользователь вводит название праздника и получает взамен дату.

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

Решение 1

Код программы:


import java.io.*;
import javagently.*;
import java.util.*;
import myutilities.*;

class Converter {

Display display = new Display ("Праздники России");
Hashtable table = new Hashtable();

Converter () throws IOException {

initialise();
readIn();
echo();
transactions();
}

// read in each line of data and store in
// the hash table with country as key

void initialise () {

display.println("Праздники и даты\n"+
"==================");
display.prompt("Файл праздников", "rates.dat");
display.ready("Нажмите кнопку ready, \n если указанное имя файла с данными верно ");
}

//считаем из файла данные в хэш-таблицу
void readIn() throws IOException {

Rates rate;
String filename = display.getString("Файл праздников");
Stream fin = Filer.open(filename);
try {
for (int i = 0; ; i++) {
rate = new Rates();
rate.setRate(fin);
table.put(rate.nameFest, rate);
}
}
catch (EOFException e) {
display.println(" Данные считаны и сохранены в таблице\n");
}
}

//выведем ключи хэш-таблицы
void echo() {

display.println("Таблица праздников \n"+
"==================");
int i = 1;
for (Enumeration e = table.keys(); e.hasMoreElements(); i++) {
String country = (String)e.nextElement();
display.println(country);
}
}

void transactions () {

display.prompt("Праздник", "Новый_год");
// display.prompt("Date", "01-01-2007");

String c;
Rates r;

while (true) {

display.println("================== \n" + "Прокрутите страницу,\n
чтобы посмотреть все праздники" + "\n ==================");
display.ready(" Введите имя праздника и нажмите кнопку ready");
c = display.getString("Праздник");

if (table.containsKey(c)) {

r = (Rates) table.get(c);
display.println("\n" + "\n" + " Праздник "+c+" "+"\n" +r.sDate +" " +"\n");
}
else {
display.println("Извините, праздника "+c+" нет в таблице\n");
}
} // while
} // transactions

public static void main(String[] args) throws IOException {

Converter data = new Converter ();
}
} // class Converter


Результат :

Подсказка


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz