Главная » Java » Чтение данных с клавиатуры

0

В этом разделе вы  узнаете, как  программа может печатать вопросы  в командном  окне  и  понимать  ответы,  которые  пользователь  вводит  с клавиатуры.  В этот раз  мы  удалим из  класса FishMaster все жестко заданные  значения,   которые  он  передает  классу  Fish.   Теперь программа  будет  задавать  вопрос:  «На какую  глубину?»,  а  рыба  будет погружаться в соответствии с ответом пользователя. Вы уже  много раз пользовались стандартным   выводом   данных System.out.  Между  прочим,  переменная  out  имеет  тип java.io.OutputStream. Сейчас я вам объясню, как  работать со стандартным   выводом  данных  System.in.  Как  вы,  наверное, догадались, переменная in имеет тип java.io.InputStream.Следующая версия класса FishMaster выводит в системную консоль строку  ввода и ожидает ответа от пользователя. После того, как пользователь  введет один или несколько символов и нажмет клавишу Enter, JVM размещает эти символы  в объект класса InputStream и передает их программе.import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader;

public class FishMaster {

public static void main(String[] args) { Fish myFish = new Fish(20);

String feetString="";

int feet;

// Создаем обработчик чтения входного потока InputStreamReader,

// который подключен к System.in и передаем его буферизованному

// обработчику чтения BufferedReader

BufferedReader stdin = new BufferedReader

(new InputStreamReader(System.in));

// Погружаемся несколько раз пока пользователь не нажмет

//  клавишу "Q"

while (true) {

System.out.println("Готова к погружению. На какую глубину?");

try {

feetString = stdin.readLine();

if (feetString.equals("Q")){

// Выход из программы System.out.println("Пока!"); System.exit(0);

}else {

// Преобразуем feetString в целое число и погружаемся

// на глубину, которая определяется переменной feet

feet = Integer.parseInt(feetString);

myFish.dive(feet);

}

} catch (IOException e) {

e.printStackTrace();

}

} // Конец while

} // Конец main

}

Диалог  между  пользователем  и  программой  FishMaster  можетвыглядеть  как:Готова к погружению. На какую глубину?

14

Погружаюсь на 14 м.

Я на 34 м. ниже уровня моря

Готова к погружению. На какую глубину?

30

Погружаюсь на 30 м.

Я на 64 м. ниже уровня моря

Готова к погружению. На какую глубину? Q

Пока! Сначала класс FishMaster создает поток  BufferedReader, который подключен к стандартному входному потоку System.in.  После  этого

он отображает сообщение «Готова  к погружению. На какую глубину?»  и метод  readLine() приостанавливает выполнение программы, пока пользователь  не  нажмет  клавишу  Enter.  Введенное  значение  будет иметь  тип String,   поэтому   класс   FishMaster   преобразует   это значение в  тип  int и  вызывает  метод  dive()  класса  Fish.  Данное действие выполняется в цикле, пока пользователь не введет символ Q, чтобы  выйти  из программы.  Строка   feetString.equals("Q") сравнивает  значение переменной feetString типа String и символ Q.Чтобы  полностью получить строку,  введенную пользователем,  за одну операцию мы  использовали метод readLine().  Однако есть и метод System.in.read(),   который   позволяет   обрабатывать

Источник: Java  Programming for Kids, Parents and Grandparents by Yakov Fain

По теме:

  • Комментарии