Spec-Zone.ru › Kotlin 2

Стандартный ввод

Java Scanner — медленный инструмент. Используйте его только тогда, когда вам нужны его специфические возможности. В остальных случаях обычно предпочтительнее использовать функцию Kotlin readln() для чтения стандартного ввода.

Для чтения стандартного ввода в Java предусмотрен класс Scanner. В Kotlin есть два основных способа чтения стандартного ввода: класс Scanner, аналогичный Java, и функция readln().

Чтение стандартного ввода с помощью Java Scanner

В Java стандартный ввод обычно осуществляется через объект System.in. Нужно импортировать класс Scanner, создать объект и использовать такие методы, как .nextLine() и .nextInt(), для чтения данных разных типов:

//Java implementation
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // Reads a single line of input. For example: Hi there!
        System.out.print("Enter a line: ");
        String line = scanner.nextLine();
        System.out.println("You entered: " + line);
        // You entered: Hi there!

        // Reads an integer. For example: 08081990
        System.out.print("Enter an integer: ");
        int number = scanner.nextInt();
        System.out.println("You entered: " + number);
        // You entered: 08081990

        scanner.close();
    }
}

Использование Java Scanner в Kotlin

Благодаря совместимости Kotlin с библиотеками Java, Java Scanner можно использовать в коде Kotlin без дополнительной настройки.

Чтобы использовать Java Scanner в Kotlin, нужно импортировать класс Scanner и инициализировать его, передав объект System.in, который представляет поток стандартного ввода и определяет способ чтения данных. Для чтения значений, отличных от строк, можно использовать доступные методы чтения, например .nextLine(), .next() и .nextInt():

// Imports Java Scanner
import java.util.Scanner

fun main() {
    // Initializes the Scanner
    val scanner = Scanner(System.`in`)

    // Reads a whole string line. For example: "Hello, Kotlin"
    val line = scanner.nextLine()
    print(line)
    // Hello, Kotlin

    // Reads a string. For example: "Hello"
    val string = scanner.next()
    print(string)
    // Hello

    // Reads a number. For example: 123
    val num = scanner.nextInt()
    print(num)
    // 123
}

Другие полезные методы для чтения ввода с помощью Java Scanner: .hasNext(), .useDelimiter() и .close():

  • Метод .hasNext() проверяет, есть ли во вводе дополнительные данные. Он возвращает логическое значение true, если остались элементы для перебора, и false, если элементов во вводе больше нет.

  • Метод .useDelimiter() задаёт разделитель для считываемых элементов. По умолчанию разделителем являются пробельные символы, но можно указать и другие символы. Например, .useDelimiter(",") считывает элементы ввода, разделённые запятыми.

  • Метод .close() закрывает поток ввода, связанный со Scanner, и предотвращает дальнейшее использование Scanner для чтения ввода.

Всегда вызывайте метод .close() после завершения работы с Java Scanner. Закрытие Java Scanner освобождает используемые им ресурсы и обеспечивает корректную работу программы.

Чтение стандартного ввода с помощью readln()

В Kotlin, помимо Java Scanner, есть функция readln(). Это самый простой способ чтения ввода. Эта функция считывает строку текста из стандартного ввода и возвращает её в виде строки:

// Reads a string. For example: Charlotte
val name = readln()

// Reads a string and converts it into an integer. For example: 43
val age = readln().toInt()

println("Hello, $name! You are $age years old.")
// Hello, Charlotte! You are 43 years old.

Дополнительную информацию см. в разделе Чтение стандартного ввода.

25 сентября 2024 г.
Обработка null в Java и KotlinAPI браузера и DOM

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/standard-input.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API