Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Java.doc
Скачиваний:
17
Добавлен:
07.09.2019
Размер:
569.34 Кб
Скачать

Стандартный ввод/вывод

Ввод программы может вестись через стандартный ввод, вывод может идти в стандартный вывод, а сообщения об ошибках могут посылаться в стандартный поток ошибок. Значение стандартного ввода/вывода в том, что программы легко могут представлять цепочку вместе, и стандартный вывод одной программы может стать стандартным вводом для другой. Это достаточно мощный инструмент.

Чтение из стандартного ввода

Стандартная модель ввода/вывода в Java имеет System.in, System.out и System.err. Выше для записи в стандартный вывод, использовался System.out, который представляет собой объект PrintStream. System.err аналогичен PrintStream, а System.in является производной InputStream без каких-либо включений. Это означает, что в отличие от System.out и System.err, System.in должен куда-то включаться (быть обернут), прежде, чем можно прочесть из него.

Обычно выполняется построчный ввод, используя readLine( ), для этого надо поместить System.in в BufferedReader. Чтобы сделать это, можно конвертировать System.in в Reader, используя InputStreamReader. Вот пример, который просто повторяет каждую вводимую строку:

// чтение из стандартного ввода.

import java.io.*;

public class Demo {

public static void main(String[] args)

throws IOException {

BufferedReader in=new BufferedReader(

new InputStreamReader(System.in));

String s;

while((s = in.readLine()).length() != 0)

System.out.println(s);

// Пустая строка прерывает выполнение программы

}

} ///:~

Причина указания исключения в том, что readLine( ) может выбросить IOException. Обратите внимание, что System.in обычно должен быть буферизирован, как и большинство потоков.

Замена System.Out на PrintWriter

System.out - это PrintStream, который является OutputStream. PrintWriter имеет конструктор, который принимает в качестве аргумента OutputStream. Таким образом, если вы хотите конвертировать System.out в PrintWriter, используйте этот конструктор:

// Перевод System.out в PrintWriter.

import java.io.*;

public class ChangeSystemOut {

public static void main(String[] args) {

PrintWriter out =

new PrintWriter(System.out, true);

out.println("Hello, world");

}

} ///:~

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

Первое приложение Java

Приложение Java может выполняться под управлением специального интерпретатора, работающего в рамках отдельного процесса, либо под управлением браузера. В первом случае мы имеем дело с автономным приложением Java, в втором - с аплетом.

Изучение программирования на Java начнем с создания простейшего автономного приложения. Далее рассмотрим, как сделать аплет и встроить его в документ HTML.

Исключительные ситуации. Обработка исключений

Исключительные ситуации - это аварийные ситуации, которые могут возникнуть во время выполнения программы. В Java исключительные ситуации могут генерироваться либо исполнительной системой JAVA (некоторые фундаментальные ошибки), либо программным кодом «вручную». При возникновении исключения, оно должно быть захвачено обработчиком определенным в программе, или обработчиком по-умолчанию. В последнем случае выдается сообщение, описывающее исключение, формируется определенная дополнительная информация (трасса стека от точки где произошло исключения) и программа завершается. Если это нежелательно, то необходимо предусмотреть обработку. Обработка исключений реализуется через создание объекта, представляющего исключение, который «вбрасывается» в метод, вызвавший ошибку. Механизм обработки исключений управляется с помощью ключевых слов: try, catch, throw, throws, finally. Ключевое слово try используется для выделения блока, в который заключается контролируемая часть кода. Слово catch определяет соответствующий обработчик для возникшего исключения. Код который должен быть обязательно выполнен перед выходом из блока try помещается в блок finally. Общая структура блока обработки исключения приведена ниже:

try { // фрагмент кода программы, в котором в котором возможно

// возникновение аварийной ситуации

}

catch (имя _класса-исключения_1 имя объекта_1){

// обработка исключений для имя _класса_исключение 1

}

catch (имя класса_исключения_2 имя объекта_2){

//обработчик исключений для имя класса_исключения_2 }

[finally {

//блок кода обработки перед выходом из try

}].

Исключения могут вырабатываться как системой Java, так и программа, при помощи throw, сама может вызвать исключительную ситуацию (ручной выброс исключения). Слово throws используется для определения возможных исключений, которые метод может создать, но не обрабатывает.