Вы можете удалить ссылку на сканер, установив для нее значение null
, т. Е. sc = null
.
-OR-
Если вам больше не нужен Scanner
, вы можете закройте его после использования:
int i = sc.nextInt();
sc.close();
Еще лучше использовать try-with-resources следующим образом:
int i;
try (Scanner sc = new Scanner(System.in)) {
i = sc.nextInt();
}
Обратите внимание, что sc.close()
закрывает сканирует и освобождает ресурс, в то время как sc = null
удаляет ссылку на сканер, но ресурс все еще может оставаться открытым.
Предупреждение: Никогда не закрывайте Scanner
для System.in
, если вы по-прежнему он нужен для большего количества входных данных от System.in
, так как закрытие Scanner
также закроет System.in
. Рассмотрим следующий код:
String s;
System.out.print("Enter a text: ");
try (Scanner sc = new Scanner(System.in)) {
s = sc.nextLine();
}
try (Scanner in = new Scanner(System.in)) {
System.out.print("Enter another text: ");
s = in.nextLine();
}
Попытка выполнить приведенный выше код приведет к:
Enter a text: hello
Enter another text: Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at Main.main(Main.java:14)