The readln and readlnOrNull functions in Kotlin are used to read a line of input from the standard input (usually the console). The readln function throws an exception if the end of input is reached, whereas readlnOrNull returns null.
Table of Contents
- Introduction
readlnandreadlnOrNullFunction Syntax- Understanding
readlnandreadlnOrNull - Examples
- Basic Usage
- Reading Multiple Lines
- Reading Input Until a Specific Condition
- Using
readlnOrNullfor Safe Reading
- Real-World Use Case
- Conclusion
Introduction
The readln and readlnOrNull functions allow you to read a single line of input from the standard input. These functions are useful for scenarios where you need to interact with the user, read configuration data, or process text input.
readln and readlnOrNull Function Syntax
The syntax for the readln and readlnOrNull functions is straightforward:
fun readln(): String
fun readlnOrNull(): String?
Returns:
readln: AStringrepresenting the line of input read. ThrowsNoSuchElementExceptionif the end of input is reached.readlnOrNull: AString?(nullable string) representing the line of input read, ornullif the end of input has been reached.
Understanding readln and readlnOrNull
readln: Reads a single line of text from the standard input and returns it as a string. Throws an exception if the end of input is reached.readlnOrNull: Reads a single line of text from the standard input and returns it as a nullable string. Returnsnullif the end of input is reached.
Examples
Basic Usage
To demonstrate the basic usage of readln and readlnOrNull, we will read a single line of input from the console.
Example
fun main() {
println("Please enter your name:")
val name = readln()
println("Hello, $name!")
}
Output:
Please enter your name:
[User enters "Alice"]
Hello, Alice!
Reading Multiple Lines
This example shows how to read multiple lines of input from the console using readlnOrNull.
Example
fun main() {
println("Enter your favorite quotes (type 'end' to finish):")
val quotes = mutableListOf<String>()
while (true) {
val line = readlnOrNull() ?: break
if (line.lowercase() == "end") break
quotes.add(line)
}
println("Your favorite quotes:")
quotes.forEach { println(it) }
}
Output:
Enter your favorite quotes (type 'end' to finish):
[User enters "To be or not to be"]
[User enters "The only thing we have to fear is fear itself"]
[User enters "end"]
Your favorite quotes:
To be or not to be
The only thing we have to fear is fear itself
Reading Input Until a Specific Condition
This example shows how to read input until a specific condition is met using readln.
Example
fun main() {
println("Enter numbers (type '0' to finish):")
val numbers = mutableListOf<Int>()
while (true) {
val line = readln()
val number = line.toIntOrNull() ?: continue
if (number == 0) break
numbers.add(number)
}
println("You entered: $numbers")
}
Output:
Enter numbers (type '0' to finish):
[User enters "5"]
[User enters "10"]
[User enters "0"]
You entered: [5, 10]
Using readlnOrNull for Safe Reading
This example demonstrates how to use readlnOrNull to handle end-of-input scenarios safely.
Example
fun main() {
println("Enter text (press Ctrl+D to end):")
val lines = mutableListOf<String>()
while (true) {
val line = readlnOrNull() ?: break
lines.add(line)
}
println("You entered:")
lines.forEach { println(it) }
}
Output:
Enter text (press Ctrl+D to end):
[User enters "Line 1"]
[User enters "Line 2"]
[User presses Ctrl+D]
You entered:
Line 1
Line 2
Real-World Use Case
Interactive Command-Line Interface
In real-world applications, the readln and readlnOrNull functions can be used to create interactive command-line interfaces for various tasks, such as configuration or data entry.
Example
fun main() {
while (true) {
println("Enter command (type 'exit' to quit):")
val command = readln()
if (command == "exit") {
println("Goodbye!")
break
}
println("You entered: $command")
}
}
Output:
Enter command (type 'exit' to quit):
[User enters "hello"]
You entered: hello
Enter command (type 'exit' to quit):
[User enters "exit"]
Goodbye!
Conclusion
The readln and readlnOrNull functions in Kotlin provide simple and effective ways to read lines of input from the standard input. By understanding and using these functions, you can efficiently manage and process text input in your Kotlin applications, ensuring that you can handle various input scenarios according to your requirements.