import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.Reader; public class Solution { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int years = reader.read(); String name = reader.readLine(); reader.close(); System.out.println(name + " захватит мир через " + years + " лет. Му-ха-ха!"); } } Консоль: 8 захватит мир через 56 лет. Му-ха-ха! Т.е. консоль не дает ввести имя, а сразу выводит результат. Понимаю, что проблема в коде int years = reader.read(); и решается через String years = reader.readLine(); Но почему, именно так это работает? Если можно подскажите, пожалуйста, что почитать для понимания.