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

Глава 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


Результат :

Подсказка


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

Hosted by uCoz