Đóng và tạo mới đối tượng Scanner
public class Main {
public static void main(String[] args) {
Scanner input1 = new Scanner(System.in);
System.out.print("Please enter your name: ");
String name = input1.nextLine();
input1.close();
Scanner input2 = new Scanner(System.in);
System.out.print("Please enter your age: ");
int age = input2.nextInt();
input2.close();
}
}
Khi chạy chương trình trên thì sẽ nhập được tên bình thường, nhưng sẽ bị 1 ngoại lệ java.util.NoSuchElementException ở lần nhập tuổi. Nguyên nhân dẫn đến việc này là tất cả các đối tượng của lớp Scanner đều chia sẻ chung InputStream nên khi 1 đối tượng đóng InputStream thì các đối tượng khác không thể sử dụng InputStream được.
Cách giải quyết là chỉ sử dụng duy nhất 1 đối tượng thuộc lớp Scanner hoặc nếu dùng nhiều đối tượng thì không đối tượng nào được phép đóng InputStream bằng phương thức close().