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

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

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 85 86 87 88 89 90 < 91 > 92 93 94 95 96 97 .. 259 >> Следующая

«
¦ Вводим данные
¦ Оцениваем каждую точку, создавая соответствующую карту с помощью пробелов и "звездочек*1
¦ Печатаем карту
Каждый из этих шагов может быть усовершенствован до уровня двойных циклов, сканирующих всю таблицу. Например, оценка точки может выполняться следующим образом: складываются значения соседних точек, расположенных от нее слева, справа, снизу и сверху, после чего полученная сумма делится на 4. Если значение замера в этой точке окажется больше средней величины для соседних четырех точек, мы отметим ее на карте звездочкой как часть месторождения* В результате у нас будет две таблицы: табляца замеров data и таблица символов тар, соответствующая карте месторождения.
point = data[i] [j];
average = (data[і-1][j]+data[i+1] Ej]+data[i][j-I]+data[iJ [j+1]Ї/4;
if (point > average) f map [i] [j] ~ cover;
}
Следует рассмотреть еще один вопрос: как быть с точками, расположенными по краю карты? Мы будем исходить из того, что у нас достаточно данных для обнаружения месторождения, поэтому мы проигнорируем точки, расположенные на границе карты. Вот почему циклы, оценивающие точки, будут работать на участках массивов, которые ограничены индексами от 1 до rowmax-l и от 1 до colmax-1.
Конструкция класса. В процессе решения задачи используются два набора данных, которые являются таблицами, Элементы одной таблицы имеют тип double, а другой — char. По этой причине нет необходимости определять отдельный класс, который бы что-нибудь моделіфовал и экземпляры которого создавались бы повторно. Однако стоит рассмотреть процедуры создания нескольких полезных методов. Программа. Вот что представляет собой класс GoldExsploration:
import java.io,*; import javagently.*; import myutilities.*;
class GoldExploration (
/* Класс GoldExploration. Автор - Дж. М. Бишоп, январь 1997 г,
204
Глава 6. Массивы и таблицы
* Java 1 * 1 октябрь 1997 г.
* Преобразует зводимые геологические замеры в
* символьную карту возможного месторождения золота.
* Демонстрирует использование s классе двух различных
* многомерных массивов,
*/
int rowMax = 8; int colMax = 8;
char шар [П1 = new char[rowMax][colMax];
double data [][] = new double[rowMaxJ[colMax]; char blank = 1 1 ,*
char cover = 1 * *;
Stream fin;
GoldExploration (} throws lOException{ introduction(Ї; getData () ; assess?); report(J ?
}
public void getData() throws lOException { for (int і - 0; і < rowMax; i++)
for (int j = 0; j < colMax; j+т)
data[i}[j} = fin.readDouble0;
}
public void assess() {
і
double point/ average; for (int і - 0; і < rowMax; i++) {
for (int j =0; j < colMax; {
map[i] [j] = blank;
}
і
a
4
for (int і = 1; І < rowMax-І; 1++) {
for (int j =1; j < colMax-І; j++) {
point = data[i][j];
average = (data 11-І][j1 + data[i+1][j] +
data[i][j-l] + data[i][j+1]1 / 4; if (point > average) roap[i]tj] = cover;
і
і
}
}
public void report(1 {
System,out *println("Карта возможных границ месторождения золота ");
System. OUt-println (рг^= = = -===«^======^===~=^™====^^=-=-= = .=аив^*і) ;
System.out.println О;
System,out.print(H M);
for fint j =0; j < colMax; j++) {
System.out .print (j + " ,T) ;
>
System.out-println ();
for (int 1=0; і < rowMax; i++J {
Toблицы
205
System,out.print(i+M n);
for (int j = Of j < colMax; j++)
System.out - print (map [i] [ j ] +T| ") ;
System.out.println (};
}
System„out.println("Удачных вам поисков!");
}
void introduction 0 throws IOException (
Sys tern * ou t .println {” ******* Золотодобывающая компания Саванны *****'*)• System.out-println("Если открытый файл не дал положительного результата \п
используйте данные файла mali.dat" +
" п) ;
fin = Filer.open{"");
System.out,println("Мы найдем золото!\nn);
}
public static void main(String ?] args) throws IOException ( new GoldExploration П;
)
}
Метод introduction использует класс открытия файлов Filer*, который разработан нами в примере 4.9 и хранится в пакете myutiiities. Если файл не найден, загружается карта mali. dat, используемая по умолчанию, в существовании которой мы уверены.
Тестирование. Ранее уже был приведен вывод программы, которая обрабатывала файл, содержащий данные, которые позволяли составить карту месторождения. Мы решили дополнительно проверить программу и ввели одинаковые данные, вследствие чего получили следующее:
***** Зологодобшащщ кокпаш *****
Ясли onpmft файл не дол положительного результата, используйте давдне файла mali.dat.
Файл eam.dst не существует.
Введите имя файна: sune.dat
Мы найдем золото Т Карта воамояошх границ месторождения золота
Предыдущая << 1 .. 85 86 87 88 89 90 < 91 > 92 93 94 95 96 97 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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