#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()
свой код, чтобы получить следующее целое число.