Carefully Closing a Scanner

suggest change

it can happen that you use a scanner with the as parameter for the constructor, then you need to be aware that closing the scanner will close the InputStream too giving as next that every try to read the input on that (Or any other scanner object) will throw an java.util.NoSuchElementException or an java.lang.IllegalStateException


Scanner sc1 = new Scanner(;
Scanner sc2 = new Scanner(;
int x1 = sc1.nextInt();
// java.util.NoSuchElementException
int x2 = sc2.nextInt();
// java.lang.IllegalStateException
x2 = sc1.nextInt();

Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents