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

Глава 1 (продолжение 1)

Вверх

1.2 Программа выводит слова определенной длины.
Наша задача: используя предыдущую программу, написать такую программу, которая будет из текстового файла считывать слова определенной длины и помещать их в текстовый файл. Имея такие текстовые файлы, в которых собраны слова из 5, 6, 7, 8 и тд букв, мы можем использовать эти файлы при работе нашей программы, составляющей кроссворды.

Попробуем усовершенствовать нашу программу с тем, чтобы она выводила слова только определенной длины. Для этого добавим еще одно условие:
Перед тем, как поместить слово в массив будет
проверяется его длина. Если длина слова равна 5,
то слово в массив заносится.

if(word.length() == 5){

group[count] = word;
count ++;
}

Как видим в условии мы использовали функцию length() класса String для определения длины считанного слова.

Вставим это условие в наш код:

int count=0; try {

while (count < 100) {
String word = fin.readString();
if (! search(group,count,word)) {
if(word.length() == 5){
group[count] = word;
count ++;
}

}
}
} catch (EOFException e) {
System.out.println(count + " words read.\n\n");
}

Посмотрим, что теперь выведет наша программа.

Подсказка


Код программы в файле Prog02.

Таким образом программа выбирает из текста
5-буквенные слова, и помещает их в массив.

Выводит этот массив на экран. Затем сортирует слова
методом отбора и снова выводит отсортированный массив
на экран.

В следующей программе надо сделать так, чтобы пользователь
в интерактивном режиме задавал длину слова, и программа
выводила бы выбранные по длительности слова в текстовый файл.

Для этого надо модернизировать функцию вывода report().

Вверх

1.3 Пользователь задает длину выводимых слов

Для того, чтобы пользователь мог задавать длину выводимых слов, потребуется несколько новых строк кода (выделено жирным).

int number = 0;

String group [] = new String[100];
System.out.print("Whate are the words length? ");
number = in.readInt();

int count=0; try {

while (count < 100) {
String word = fin.readString();
if (! search(group,count,word)) {
if(word.length() == number){
group[count] = word;
count ++;
}
}
}
} catch (EOFException e) {
System.out.println(count + " words read.\n\n");
}

Теперь программа запрашивает у пользователя длину слова. И выводит слова, указанной длины.

Но есть еще одно неудобство в нашей программе. Оно заключается в том, что вывод результатов программы происходит на экран, и как следствие данные теряются. Чтобы сохранить данные по окончанию работы программы, надо перенаправить вывод программы в объект класса Stream, и связать этот объект с файлом. Объявим объект fout класса Stream и передадим ему в параметр имя файла, и режим - запись в файл.

Stream fout= new Stream ("parts.out",Stream.WRITE);

Далее следует модифицировать функцию report() и ее вызов в программе:

void report (String[] a, int n, Stream fout) {

for (int i = 0; i < n; i++) {
fout.print(a[i]+"\t ");

if (i>0 && i % 7 == 0){

fout.println("\t");
}
}
}

Вот как будет выглядеть теперь вызов этой функции:

report(group,count,fout);

Результаты программы теперь выводятся в файл parts.out и сохраняются в нем.

Код программы в файле Prog03.


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

Hosted by uCoz