Java. Урок 8. Работа с консолью (Ввод и вывод данных)

Уроки для начинающих   13 Январь 2013  Автор статьи:  

В данном уроке мы научимся считывать данные из консоли и выводить их в консоль. Самая важная особенность программ — это умение считывать некоторые данные, с которыми она в дальнейшим выполняет какие — то операции. Для того, чтобы считывать данные из консоли мы будем применять класс Scanner. Для того, чтобы применять данный класс необходимо подключить import java.util.Scanner; Так как вы уже познакомились с основными типами данных, то теперь попробуем их считать с консоли:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Scanner;
public class test {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int a = in.nextInt();//считываем целое число
        byte b = in.nextByte();//считываем байтовое число
        String c = in.nextLine();//считываем одну строку целиком
        double d = in.nextDouble();//считываем вещественное число
        long  e = in.nextLong();//считываем длинное целое число
        short f = in.nextShort();//считываем короткое целое число
        String s = in.next();//считываем строку до первого пробела
    }
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        int a = 7;
        System.out.print(a);//выведем 7 на консоль
        String s = "Привет мир";
        System.out.println(s);//выведем строку "Привет мир" и перевод на следующую строку
        System.out.print("Я на новой строке");//Выведем на консоль  "Я на новой строке"
        /*
        Таким образом мы вывели на консоль следующий текст
        7Привет мир
        Я на новой строке
         */
   
    }
}

Методы print и println позволяют выводить базовые типы данных, которые были рассмотрены нами до этого на экран. Но что за магическое место консолька и как и где на нее выводить информацию. Давайте рассмотрим простой пример, пусть нам на вход подается два целых числа, необходимо вывести их сумму:

1
2
3
4
5
6
7
8
9
10
import java.util.Scanner;
public class test {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int a = in.nextInt();//считываем целое число a
        int b = in.nextInt();//считываем целое число b
        System.out.print(a+b);//выводим сумму a+b
    }
}

Копируйте к себе эту программку, не забудьте переименовать мой класс test на свой. Запускайте. Следующее окно в Intellij IDEA является консолью:
Java-Console
После запуска программы необходимо поставить курсор на нее и ввести через пробел значения переменной a и переменной b. После этого программа начнет исполнятся и выведет в консоль результат. Также на консоли отображаются ошибки, которые возникают во время работы программы или при ее компиляции. На ней отображается запущена программа или нет, кроме этого можно остановить уже работающую программу.


Работа с консолью в C++

  • Иван

    Спасибо большое. Для начинающего это наиболее понятная статья.

  • Марат

    Огромное спасибо!

  • Miras

    а как на счет Char?

    • http://cybern.ru/ lordrp

      Читай строку целиком, а там уже чары из нее выделяй, например так можно=)

  • Дима

    Ну и как вводить дробные значения переменных??? просто double выдает ошибку.

    • Дима

      Все нормально, сам ошибался, обращайте внимание на настройки винды «языки и региональные стандарты». В англ. используется точка 1.2, а в рус. используется запятая 1,2 !

  • Антон

    При использовании последнего примера в IntelliJ IDEA 13.1.4 возникает сообщение
    «Exception in thread «main» java.util.NoSuchElementException»

    • http://cybern.ru/ lordrp

      Вы случайно не забыли следующий импорт? import java.util.Scanner; Еще есть мнение, что не правильно вводите в консоль данные, попробуйте ввести оба числа через пробел

      • Антон

        Даже при простом копировании примеров из этой статьи выдается такая ошибка. До консоли даже не доходит =)

        • http://cybern.ru/ lordrp

          А какая-нить другая программа компилируется?

  • Артем

    Почему-то не могу вводить дробные числа. В каком формате они должны вводиться? В разных форматах пробовал вводить выдает ошибки =(

    import java.util.Scanner;

    public class HelloWorld {
    public static void main(String[] egrs) {

    Scanner in = new Scanner(System.in);

    long a = in.nextLong();

    System.out.println(a);

    }
    }

    • Артем

      В общем я понял 1 ошибку (надо было внимательней читать).
      На сколько я понял дробные числа вводим только в переменную double, однако вводить значения получается только в формате 102е-2 консоль возвращает 1.02.

      Можно как-то проще вводить вещественные числа?

      • Svintus Lentus

        float

    • Андрей

      Ошибка потому что не правильно использовали тип для переменной, так как long для целых чисел, а в вашем случае надо использовать double.

      Плюс надо вводить не через точку, а через запятую, например, «1,05».

      http://pastebin.com/Q4AEstXw

  • Svintus Lentus

    println — паскалятина какая-то.
    где правоверный printf?

    • Александр Костенко

      и как тогда ввести в строковую переменную после байта?

  • Александр Костенко

    String c = in.nextLine();//считываем одну строку целиком

    System.out.println(c);

    ввожу тут слово в эту переменную. и выдает ошибку.

    Exception in thread «main» java.util.InputMismatchException

    at java.util.Scanner.throwFor(Scanner.java:909)

    at java.util.Scanner.next(Scanner.java:1530)

    at java.util.Scanner.nextDouble(Scanner.java:2456)

    at TestInput.main(TestInput.java:15)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:606)

    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

  • Игорь

    Полная лажа: Нем могу понять почему не срабатывает код.
    import java.util.Scanner;

    public class Prog4 {

    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String str1= in.next();

    if (str1==»qwer»){
    System.out.println(«Агонь»);
    }
    else{
    System.out.println(«НЕ Агонь»);
    }

    }

    }

    Программа выводит «Не Агонь»
    Проверяю по длинне и содержимому все совпадает, все равно выводит не то что нужно.

    • Roman Barnoul

      В данном случае нужно использовать str1.equals(‘qwer’), потому что == сравнивает не по значению, а по ячейке в памяти

Научиться программировать

  • на Delphi

  • на Java

  • на C++