Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Бишоп Д. -> "Эффективная робота Java 2" -> 99

Эффективная робота Java 2 - Бишоп Д.

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 93 94 95 96 97 98 < 99 > 100 101 102 103 104 105 .. 259 >> Следующая

После объявления интерфейса Enumeration для данной последовательности объектов (каковой является последовательность keys) метод nextElement будет предоставлять следующий элемент в цикле. Можно задать, чтобы этот метод работал до тех пор, пока метод hasMoreElements не вернет значение false» В качестве примера рассмотрим хеш-таблицу timesOf Day. Цикл, обеспечивающий вывод ключей, выглядит так:
for (Enumeration є = timesOfDay.keys(); e.hasMoreElements (); 1+*) {
String s = (String) e.nextElement(); display,println(s);
}
В результате выполнения данный цикл может вывести следующие ключи (что зависит от того, были ли они введены в таблицу):
Полночь
Полдень
Вечерние новости
Поскольку требуется приведение типа, та часть цикла, которая отвечает за предоставление нового объекта string, выполняется как отдельная операция присвоения в теле цикла, а не одновременно с частями, отвечающими за инициализацию и проверку, как это обычно происходит в циклах for.
Доступ к значениям в хеш-таблице
Теперь, когда обеспечен поочередный доступ к каждому из ключей, мы можем получить соответствующие значения из хеш-таблицы. Для этой цели мы воспользуемся методом get. Например, приведенный выше цикл можно расширить таким образом:
for (Enumeration е = timesOfDay*keys[); e.hasMoreElements?}; І++) {
String s = (String) e.nextElement(} ;
Times t = (Times) timesOfDay.get(s); display .println (s + 11 " + t) ;
J
Взяв на вооружение все полученные сведения, приступим к решению примера 6.8.
«•" •• ..у:-«I
у. а
Конвертер валют
Задача Нсабнздтев обеспБтатБ тзмхіж'посгь ітрисіикггря едрэд (южкоафрк-канские рэнды) к валютам разных стран и выполнение конвертирования вводимых сумм.
222
Главо 6. Массивы и таблицы
Способ решения, На Web-узле www.xe.net ежедневно обновляются курсы валют всего мира, На основе публикуемых там данных мы можем сформировать таблицу, фрагмент которой показан ниже:
Денежная единица ZAR/едипица (валюты) Единица/ZAR
DZD Алжирские динары 0.777 12.9
USD Американские доллары 4.556 0.2195
ARP Аргентинские песо А .56 0.2195
AEJD Австралийские доллары 3.35 6 0.2930
ATS Австрийские шиллинги 0.3 614 2.7 67
BSD Багамские доллары 4.55 6 0.. 2195
BBD Барбадосские доллара 2.2 65 0.4415
DEF Бельгийские франки 0,1231 8.121
В каждом ряду таблицы содержится по4значения — код, название валюты данном страны и два курса обмена. Как сказано в условии задачи, в качестве индексов должны использоваться элементы второго поля — названия стран. Поскольку название страны представляет собой строку, мы не можем хранить данные в массиве, но можем использовать в программе хеш-таблицу.
Мы введем все значения в хеш-таблицу, ряд за рядом, а затем будем обращаться к ней, используя ключ, которым является название страны. Если название страны окажется действительным, мы получим курс обмена и сумму в валюте указанной страны, которая с учетом курса будет равна введенной нами сумме в zar.
Конструкция класса. В совокупности поля одного ряда образуют объект, для которого мы должны создать класс. В отличие от разработанных раннее классов, этот предназначается не для предоставления каких-либо методов, а для приема и хранения данных. Поэтому класс может в дополнение к своим основным функциям предоставить метод для ввода данных в свои поля из файла. Давайте назовем этот класс Rates.
Поскольку мы уже решили, что будет представлять собой класс Rates, можно создать хеш-таблицу на основе объектов и обрабатывать ее описанным способом. Диаграмма на рис. 6.17 поможет нам решить, какой метод избрать. Таблица представлена как объект класса Hashtable. Поскольку класс Hashtable входит в пакет java .util, мы не имеем доступа к его структуре, но знаем, что он содержит ключи и значения. Это и отражено на диаграмме. Ключи в таблице — это объекты класса String, а значения — объекты класса Rates4 255J
Initialize (} readln() echo ()
transact ionsQ
j Hashtable j _ _ _ і
ключ значение
String






-»!
Rates
country
code
currency
conversion
¦ « ** —*¦ -Vi
&etRate(Stream)
1
I
J
Рис* 6.17. Диаграмма моделирования для программы "Конвертер валют' Таблицы, не зависящие от класса
223
Программа. Сначала рассмотрим класс Rates.
impart java.io.*; import javagently.*;
class Rates {
/* Класс Rates. Автор - Дж. М. Бишоп, декабрь 1998 г*
* Хранит название страны, валюту, ход и курс обмена.
*/
String country;
String code;
String currency; double conversion;
void setRate {Stream in} throws lOException { code - in.readString(); country - in.readString(}; currency = in *readString{);
// Нам не нужен первый курс, поэтому мы его // проигнорируем, записав, следующий поверх него conversion = in*readDouble?); conversion = in.readDouble();
Предыдущая << 1 .. 93 94 95 96 97 98 < 99 > 100 101 102 103 104 105 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.