У меня есть этот код, который вызывает метод, чтобы проверить, является ли число определенной длиной, а если нет, новый номер должен быть повторно введен пользователем.Как правильно закрыть класс сканера внутри метода?
Проблема заключается в том, что я не могу найти подходящий способ закрыть класс сканера, чтобы предотвратить утечку ресурсов.
Код указан в данный момент.
public static void setIdentification(Person p, int dni) {
Scanner input = new Scanner (System.in);
String lengthChecker = Integer.toString(dni);
if (lengthChecker.length() < 1 || lengthChecker.length() > 8) {
int dni1;
do{
System.out.println("The ID number isn't valid. Please, introduce a valid number: ");
dni1 = input.nextInt();
lengthChecker = Integer.toString(dni1);
} while (lengthChecker.length() > 8 || lengthChecker.length() < 1);
p.dni = dni1;
} else {
p.dni = dni;
}
}
public static void main(String[] args) {
Scanner input1 = new Scanner (System.in);
int dni = input1.nextInt();
Person person1 = new Person();
setIdentification(person1, dni);
}
Я попытался установить input.close();
в ряде различных мест, но я всегда в конечном итоге получаю ошибку во время выполнения.
Существует, вероятно, миллион способов оптимизации этого кода, но прямо сейчас мне просто интересно узнать, как закрыть эти сканеры.
Сканеры реализуют 'AutoCloseable', поэтому вы можете обернуть их в блок try-with-resources. – toniedzwiedz