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]);