Назад
Вперед
7.8. Работа приложения Java с консолью
Приложение показывает несложные приемы ввода с
системной консоли текстовых строк и целых чисел,
а также отображение текстовых строк на консоли.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Немного теории
Консольное автономное приложение Java, не
создающее окон на базе класса Frame, общается с
пользователем через символьную консоль (подобно
старым программам DOS).
Для работы с консолью в классе java.lang.System
определены так называемые стандартные потоки,
предназначенные для ввода данных с клавиатуры,
вывода обычных сообщений и сообщений об ошибках.
Стандартный поток ввода определен следующим
образом:
public static final InputStream in;
Для ввода данных из этого потока приложения
пользуются методом read. Ему необходимо передать
ссылку на массив байт, в который будут записаны
символы, введенные с клавиатуры (включая символ
возврата каретки и перевода строки).
При работе с клавиатурой этот метод возвращает
количество прочитанных символов.
Для вывода обычных сообщений используется
стандартный поток вывода:
public static final PrintStream out;
Для работы с этим потоком обычно используются
методы print и println. Метод println в отличие от метода
print после вывода текстового представления
переданного ему аргумента выполняет перевод
строки.
В классе PrintStream определено несколько
реализаций метода print и println с параметрами
различных типов. Вот список реализаций метода
print:
public void print(boolean b);
public void print(char c);
public void print(char s[]);
public void print(double d);
public void print(float f);
public void print(int i);
public void print(long l);
public void print(Object obj);
public void print(String s);
Поток для вывода сообщений об ошибках выглядит
следующим образом:
public static final PrintStream err;
Для работы с этим потокам вы также можете
использовать методы print и println.
Описание примера
Наше консольное приложение вводит в цикле
строки и числа, отображая их на консоли:
* Console I/O demonstration
Enter string ('quit' to exit): Test String
String: Test String
Enter intger number: 123
Number: 123
Enter string ('quit' to exit): Hello!
String: Hello!
Enter intger number: 3567
Number: 3567
Enter string ('quit' to exit): quit
String:quit
Цикл завершится, если пользователь введет
строку quit.
Рассмотрим исходный текст приложения.
Метод main
В главном классе мы определили статический
метод main, который получает управление сразу
после запуска приложения, а также методы getKbdString и
getKbdInt. Метод getKbdString предназначен для ввода с
консоли текстовых строк, а метод getKbdInt - для ввода
с консоли целых чисел.
Введенные строки и числа сохраняются на время
работы одной итерации цикла в переменных s и i,
соответственно:
String s;
int i;
Получив управление, метод main первым делом
выводит на консоль сообщение:
System.out.println(
"* Console I/O demonstration\n");
При этом он выполняет запись в стандартный
поток вывода.
Далее запускается цикл:
while(true)
{
System.out.print(
"Enter string ('quit' to exit): ");
s = new String(getKbdString());
System.out.println("String: " + s);
if(s.equals("quit"))
break;
System.out.print(
"Enter intger number: ");
i = getKbdInt();
System.out.println("Number: " + i);
}
В этом цикле мы сначала выводим приглашение для
ввода текстовой строки, а затем вводим эту строку
методом getKbdString, определенным в нашем приложении.
Если пользователь ввел строку "quit", цикл
завершает свою работу.
Если введена другая строка, метод main выводит на
консоль приглашение для ввода целого числа.
Число вводится методом getKbdInt.
Вся введенная информация отображается на
консоли.
Метод getKbdString
Для ввода с клавиатуры текстовых строк мы
определили метод getKbdString:
static public String getKbdString()
{
. . .
}
Внутри тела метода мы предусмотрели три
переменные:
byte bKbd[] = new byte[256];
int iCnt = 0;
String szStr = "";
Массив байт bKbd заполняется символами,
введенными с клавиатуры. В переменную iCnt
записывается количество этих символов. И,
наконец, в переменной szStr хранится строка,
сформированная из массива bKbd.
Ввод символов с клавиатуры выполняется методом
read:
try
{
iCnt = System.in.read(bKbd);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
Во время выполнения этого метода возможно
возникновение исключений, поэтому мы
предусмотрели блок try-catch.
Когда пользователь введет строку символов и
нажмет клавишу <Enter>, метод read возвратит
управление. При этом в переменную iCnt будет
записано количество введенных символов.
Пользуясь этой информацией, мы формируем из
массива введенных символов текстовую строку
класса String:
szStr = new String(bKbd, 0, iCnt);
Далее мы удаляем из строки все служебные
символы (в частности, символы возврата каретки и
перевода строки):
szStr = szStr.trim();
Результат возвращается оператором return:
return szStr;
Метод getKbdInt
Для ввода с клавиатуры целых чисел мы
определили несложный метод getKbdInt:
static public int getKbdInt()
{
String szStr = getKbdString();
Integer intVal = new Integer(szStr);
return intVal.intValue();
}
Здесь мы просто вызываем метод getKbdString и
преобразуем введенную этим методом строку
сначала к типу Integer, а затем к типу int. Оператор return
возвращает результат такого преобразования.
Назад Вперед |