Qu'est-scanner.close() faire?
Dire que j'ai l'exemple de code suivant:
Scanner scan1 = new Scanner(System.in); //declaring new Scanner called scan1
int x = scan1.nextInt(); //scan for user input and set it to x
System.out.println(x); //print the value of x
scan1.close(); //closes the scanner (I don't know exactly what this does)
Scanner scan2 = new Scanner(System.in); //declaring new Scanner called scan1
int y = scan2.nextInt(); //scan for user input and set it to y
System.out.println(y); //print the value of y
J'ai lu le La documentation d'Oracle sur le Scanner
de la classe et suis tombé sur ceci:
Lorsqu'un Scanner est fermé, il va fermer son de la source d'entrée si la source met en œuvre la Fermer l'interface.
Est-ce à dire qu'une fois qu'un Scanner
(de System.in
) est fermé, je ne veux plus être en mesure d'utiliser System.in
tout au long de l'ensemble du programme Java? Ou signifie-t-il je ne veux plus être en mesure de l'utiliser tout au long de la classe? Ou seulement la méthode? Ou seulement son champ d'application?
J'ai une autre question est, est un Scanner limitée à la portée qu'elle a été déclarée à l' (similaire aux types de données primitifs)?
- double possible de Fermer un Scanner relié au Système.dans
- Aussi stackoverflow.com/questions/23621668/...
- Également liées: stackoverflow.com/questions/14962082/...
Vous devez vous connecter pour publier un commentaire.
Oui, cela veut dire que
System.in
sera fermé. Cas de Test:Ce code se termine avec
Une fois fermé, vous ne serez pas en mesure d'utiliser
System.in
pour le reste de votre programme. Le fait queclose()
est passé à travers, c'est agréable car cela signifie que vous n'avez pas à maintenir une référence distincte pour le flux d'entrée, de sorte que vous pouvez le fermer plus tard, par exemple:Vous pouvez le faire et appel
.close()
sur le scanner pour fermer le flux sous-jacent.Dans la plupart des cas, vous ne voulez pas fermer
System.in
, de sorte que vous ne souhaitez pas appeler.close()
dans ce cas.scanner.close()
surSystem.in
dans une boucle for dans une méthode (c'est-à-disant), je ne vais pas être capable de l'utiliser dans toutes les classes dans mon programme?