Чтение стандартного ввода
Используйте функцию readln() для чтения данных из стандартного ввода. Она считывает всю строку как строку:
// Reads and stores the user input in a variable. For example: Hi there! val myInput = readln() println(myInput) // Hi there! // Reads and prints the user input without storing it in a variable. For example: Hi, Kotlin! println(readln()) // Hi, Kotlin!
Также можно считать многострочный ввод как одну строку. Используйте функцию joinToString(), чтобы объединить строки:
val input = generateSequence(::readlnOrNull)
.joinToString("\n")
Для работы с типами данных, отличными от строк, можно преобразовать ввод с помощью функций преобразования, таких как .toInt(), .toLong(), .toDouble(), .toFloat() или .toBoolean(). Можно считывать несколько значений разных типов данных и сохранять каждое из них в отдельной переменной:
// Converts the input from a string to an integer value. For example: 12 val myNumber = readln().toInt() println(myNumber) // 12 // Converts the input from a string to a double value. For example: 345 val myDouble = readln().toDouble() println(myDouble) // 345.0 // Converts the input from a string to a boolean value. For example: true val myBoolean = readln().toBoolean() println(myBoolean) // true
Эти функции преобразования предполагают, что пользователь вводит корректное представление целевого типа данных. Например, преобразование "hello" в целое число с помощью .toInt() приведёт к исключению, поскольку функция ожидает, что введённая строка содержит число.
Чтобы считать несколько элементов ввода, разделённых разделителем, используйте функцию .split(), указав разделитель. В следующем примере кода данные считываются из стандартного ввода, разбиваются на список элементов с помощью разделителя, а каждый элемент списка преобразуется в определённый тип:
// Reads the input, assuming the elements are separated by spaces, and converts them into integers. For example: 1 2 3
val numbers = readln().split(' ').map { it.toInt() }
println(numbers)
//[1, 2, 3]
// Reads the input, assuming the elements are separated by commas, and converts them into doubles. For example: 4,5,6
val doubles = readln().split(',').map { it.toDouble() }
println(doubles)
//[4.0, 5.0, 6.0]
Безопасная обработка стандартного ввода
Для безопасного преобразования пользовательского ввода из строки в целое число можно использовать функцию .toIntOrNull(). Эта функция возвращает целое число, если преобразование выполнено успешно. Однако, если ввод не является корректным представлением целого числа, она возвращает null:
// Returns null if the input is invalid. For example: Hello! val wrongInt = readln().toIntOrNull() println(wrongInt) // null // Converts a valid input from a string to an integer. For example: 13 val correctInt = readln().toIntOrNull() println(correctInt) // 13
Функция readlnOrNull() также помогает безопасно обрабатывать пользовательский ввод. Функция readlnOrNull() считывает данные из стандартного ввода и возвращает null, если достигнут конец ввода, тогда как readln() в таком случае выбрасывает исключение.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/read-standard-input.html