Есть ли какой-нибудь способ получить ввод от сканера без его объявления?

#java

#java

Вопрос:

Обычно вы объявляете сканер ввода с Scanner scan = new Scanner(System.in);

Есть ли какой-либо способ использовать метод в сканере, такой как nextInt() или nextLine() без создания объекта класса?

Комментарии:

1. Нет. Зачем вам это вообще нужно?

2. @tevemadar Если мне нужен только один тип ввода, я бы предпочел просто импортировать его, а не весь класс.

Ответ №1:

Вы могли бы создать служебный класс, создать статические методы в этом служебном классе и использовать import static для методов в служебном классе. Импорт статического метода позволяет использовать методы из класса без необходимости явно использовать класс. Смотрите ссылку здесь.

Файл TestApp.java

 
package com.example;

import static com.example.utils.ConsoleReader.nextInt;
// Or use "import static com.example.utils.ConsoleReader.*;" if you want to import every static methods in class "ConsoleReader"

public class TestApp {

    public static void main(String[] args) {
        System.out.println("Enter the number the number");
        // The following line calls the method of the class "ConsoleReader" without having to reference it.
        int input = nextInt();
        System.out.println("You have entered "   input);
    }

}


  

Файл ConsoleReader.java

 package com.example.utils;

import java.util.Scanner;

public class ConsoleReader{
    private static Scanner scan = new Scanner(System.in);
    
    public static int nextInt() {
        return scan.nextInt();
    }

    public static String nextLine() {
        return scan.nextLine();
    }
}

  

Ответ №2:

Вы могли бы создать статический класс, который возвращает желаемый тип переменной.

Например, если вы хотите создать свой собственный класс для чтения следующего целого числа:

 public static int nextInt(){
    Scanner scanner = new Scanner(System.in);
    return scanner.nextInt();
}
  

Однако на самом деле вам все равно нужно его объявить.

Затем вы можете просто ввести nextInt() свой код, чтобы получить следующее целое число.