У вас вопросы?
У нас ответы:) SamZan.net

Xi это числа Вывести в выходной текстовый файл такие значения последовательности {Xi} которые принадлежат

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 10.6.2025

Практическая работа №2.
Использование базовых синтаксических конструкций.
Текстовый ввод-вывод.

  1.  Цель работы

Научиться практическому применению языковые конструкции Java для проверки условий и организации циклов. Воспользоваться стандартными средствами java для чтения-записи текстовых данных.

  1.  Пример.

Имеется входной текстовый файл, в каждой строке которого содержится по одному целому числу:

A

B

X1

Xi

здесь все значения A, B, X1... Xi это числа.

Вывести в выходной текстовый файл такие значения последовательности {Xi}, которые принадлежат интервалу [A, B], указанному в первых двух строках входного файла.

Напишем программу на java с использованием классов семейства Reader.

  1. Чтение данных

В Java существует множество интерфейсов и классов, обеспечивающих работу с данными. Основные интерфейсы и классы сосредоточены в пакете java.io.

За чтение-запись данных в Java отвечает несколько интерфейсов разного уровня:

  1. интерфейсы семейства InputStream/OutputStream – низкоуровневый доступ к байтам данных,
  2. надстройки на первыми двумя Reader/Writer – способны работать с массивами символов,
  3. надстройки PrintStream для вывода в виде текста.

Потоки InputStream/OutputStream реализуют стандартную парадигму работы с последовательностями байт, так что специально на них останавливаться не будем. Бо'льший интерес представляют высокоуровневые надстройки над ними - классы, реализующие интерфейсы Reader/Writer, PrintStream .

Работа с файлами и потоками вообще, организуется классически виде действий "открытие-работа-закрытие", с ответственностью за освобождение ресурсов программистом. Совершенно естественно здесь будет использована конструкция  try-finally:

// создание и открытие потока stream

XStream stream = new XStream(); // здесьXStream некоторый реальный потоковый класс

try {

… использование потока stream

} finally {

 // закрытие потока

 stream.close();

}

Рассмотрим основные методы java.io.Reader.

В первую очередь это набор перегруженных методов read:

public int read()

public int read(char cbuf[])

public int read(java.nio.CharBuffer target)

abstract public int read(char cbuf[], int off, int len)

Они недостаточно удобны для работы с текстами, т.к. ориентированы на работу с отдельными символами, а не со строками.

Более удобно использовать потомка ReaderBufferedReader,  с его более приспособленными методами получения строк readLine:

 public String readLine()

public String readLine(boolean ignoreLF)

В них данные сразу считываются в виде строк.

Интерфейс PrintStream описывает выводт строк и его удобно использовать для формирования текстового вывода и журналирования:

 void print(Type data) семейство методов вывода типизированных данных (Type)

и void println(Type data)

PrintStream printf(String format, Object ... args) форматированный вывод

 и PrintStream format(String format, Object ... args)

  1. Пребразования строк в числа

В Java конверторы из строк в базовые типы встроены в классы-оболочки самих типов.

Т.е. существуют методы получения типизированных значений из строк:

int Integer.parseInt(String);

long Long.parseLong(String);

float Float.parseFloat(String);

double  Double.parseDouble(String);

Воспользуемся этим, выделив получение очередного числа в отдельную функцию:

 final static Integer getInt(BufferedReader rd)

       throws IOException

  {

       final String data = rd.readLine();

       // if (data == null) throw new IOException("End-of-file");

       return (data == null) ? null : Integer.parseInt(data);

   }

Формирование значения null будет индикатором достижения конца входного потока. Именно по этому тип возвращаемого значения функции Integer, а не int.

  1. Скелет программы.

class Main{

static Integer getInt(BufferedReader rd) …

static void main(String[] args) {

 открытие потоков;

 try {

 int A = getInt(…);

 int B = getInt(…);

 while (есть данные) {

  if ( … очередное значение внутри [A,B] … ) {

   … вывести значение …

}

} // while

} finally {

  … Закрытие потоков …

}

}

 Пример реализации см прилагающийся проект. Для того чтобы включить его в NetBeans используйте "File"/"Open Project ...".

  1.  Задание.

В текстовом файле в первой строке задано целое число N. Далее в каждой последующей строке  содержится ровно по N чисел. Вывести в выходной текстовый файл построчные суммы.

Пример входного файла:

3

12  35   -10

-9  3  1

7 4  6

0 -100  -2

И соответствующий сформированный ответ:

37

-5

17

-102

На что следует обратить внимание.

  1. main не должна выбрасывать никаких исключений
  2. обработка ошибок не должна сильно искажать код, что в данном случае точно достижимо). Например, можно принять во внимание, что FileNotFoundException порождена от IOException, так что обработается в том же catch-блоке.
  3. ресурсы надо оборачивать в отдельные блоки try-finally, чтобы гарантировано закрывать ресурсы в части finally;
  4. разбор строк из N чисел иметь в явном виде метода и с контролем количества читаемых значений:
    int[] getVector(int n)
    где n – кол-во загружаемых значений.




1. Понятие и особенности социально-психологического тренинга
2. реферату- Правові рамки діяльності українських засобів масової комунікаціїРозділ- Журналістика Правові ра
3. Тема. Внешнеэкономическая деятельность.html
4. Производственная практика на «ОАО Беларускабель»
5. Сокращение разрывов в маркетинге
6. В На современном этапе невозможно представить многие сферы деятельности без использования информационны
7. ИЖЕВСКАЯ ГОСУДАРСТВЕННАЯ СЕЛЬСКОХОЗЯЙСТВЕНННАЯ АКАДЕМИЯ ФАКУЛЬТЕТ НЕПРЕРЫВНОГО ПРОФЕССИОНАЛЬНОГО
8. 2014 рр. Таблиця результатів після 6го туру 14
9. Дизель (Diesel), Рудольф
10. Види банківського переказу