Java → Ввод и вывод данных с Консоли

В Java есть понятия "Стандартный ввод" (Systen.in) и "Стандартный вывод" (Systen.out). По умолчанию стандартный ввод и вывод связаны с Консолью, откуда запускается программа. Поэтому если мы хотим вывести данные в консоль, мы пишем в стандартный вывод(System.out) :

System.out.println("Я пишу в стандартный вывод");

Также чтобы чтобы считать данные с консоли нужно считать данные из стандартного ввода (System.in). Но, объект System.in сам по себе позволяет считывать данные только по байтам и это очень неудобно.

System.out.read();

Но, мы можем использовать другие классы, которые будут нам помогать считывать из стандартного ввода полноценные строковые данные. 

Один из таких классов, которым можно обернуть System.in это BufferedReader:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

Создав объект reader, связанный со стандартным вводом, мы можем оттуда считавать строки, который вводит пользователь в консоль.

String text = reader.readLine();

Но, этот может вызвать Исключение, поэтому Java не позволит нам его скомипилировать. Поэтому, мы должны поймать и обработать исключение с помощью операторов try catch:

String text;
try {
    text = reader.readLine();
} catch (IOException e) {
    text = "";
}

Если не будет ошибок, то в переменной text будет строка введенная пользователем, иначе будет пустая строка.

Чтобы в каждом месте где нужно считать данные не писать этот многострочный код, я рекомендую вам создать отдельный класс, у которого будет метод для считывания данных с консоли. Например мы можем назвать его Console:

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Console {
    public static String readLine() {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        try {
            return reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

    public static void print(String line) {
        System.out.println(line);
    }
}

Также в этот мы можем добавить метод print, который выводит текст в Консоль. Теперь мы можем считывать строки с Консоли вот так:

String line = Console.readLine();

Разделение строки на несколько частей

Иногда пользователям нужно вводить несколько значений в одной строке. Поэтому, программист должен уметь обрабатывать и такие данные. 

Чтобы разбить строку на несолько строк по определенному символу, используется метод split()  класса String. Например у нас есть строка "12 3 45". Разобъем ее на три части по знаку пробела:

String line = "12 3 45";
String[] numbers = line.split(" ");

Метод split() возвращает массив строк String[]. Поэтому в массиве numbers первым элементом будет строка "12", вторым "3", а третьим "45".

System.out.println(numbers[0]); // 12
System.out.println(numbers[1]); // 3
System.out.println(numbers[2]); // 45

Чтобы преобразовать строку в целое число или в любое другое....читайте лекции. 
 

int number = Integer.parseInt(numbers[0]);
float number2 = Float.parseFloat(numbers[1]);

 

1661 9
Alisher Alikulov