Глава 6
Задача 6.6 " Всенародные праздники."
Используя хеш-таблицу, создайте программу, позволяющую вводить и сохранять даты всенародных праздников вашей страны для текущего года. С помощью класса Display реализуйте следующую функцию: пользователь вводит название праздника и получает взамен дату.
Рассмотрите возможность создания большой хеш-таблицы, в которую были бы внесены все дни года, чтобы при вводе даты можно было узнать, выпадает ли на этот день какой-либо праздник.
Решение 2
Код программы:
import java.io.*;
import javagently.*;
import java.util.*;
import myutilities.*;
class NameFest {
Display display = new Display ("Праздники России");
Hashtable table = new Hashtable();
NameFest () throws IOException {
initialise();
readIn();
// echo();
transactions();
}
// read in each line of data and store in
// the hash table with date as key
void initialise () {
display.println("Праздники и даты\n"+
"==================");
display.prompt("Файл праздников", "fest.dat");
display.ready("Нажмите кнопку ready, \n если указанное имя файла с данными верно ");
}
//считываем данные и помещам в хэш-таблицу объекты Fest
void readIn() throws IOException {
Fest fest;
String filename = display.getString("Файл праздников");
Stream fin = Filer.open(filename);
try {
for (int i = 0; ; i++) {
fest = new Fest();
fest.setFest(fin);
table.put(fest.sDate, fest);
}
}
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("Число", "1");
// display.prompt("Date", "01-01-2007");
String c; // для месяца
String d; // для числа
Fest r; // объект Fest
while (true) {
display.ready(" Введите дату праздника (месяц,число)\n и нажмите кнопку ready");
c = display.getString("Месяц");
d = display.getString("Число");
d = d + "_" + c;//дата считана
if (table.containsKey(d)) {
r = (Fest) table.get(d);
display.println("\n" + "\n" + " "+d+" " +r.nameFest +" " +"\n");
}
else {
display.println("\n" + "\n" + "Извините, праздника "+d+" нет в таблице\n");
}
} // while
} // transactions
public static void main(String[] args) throws IOException {
NameFest data = new NameFest ();
}
} // class Converter
Результат :
Назад |
Начало урока |
Вверх |
Вперед
Содержание