Scanner n'est jamais fermée
Je suis en train de travailler sur un jeu et je suis tombé sur un petit problème avec mon scanner.
J'ai une fuite de ressources scanner jamais fermé.
Mais je pensais que mon scanner travaillait avant sans la fermer.
Mais maintenant, il n'est pas. Quelqu'un peut m'aider ici?
import java.util.Scanner;
public class Main {
public static final boolean CHEAT = true;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int amountOfPlayers;
do {
System.out.print("Select the amount of players (1/2): ");
while (!scanner.hasNextInt()) {
System.out.println("That's not a number!");
scanner.next(); //this is important!
}
amountOfPlayers = scanner.nextInt();
while ((amountOfPlayers <= 0) || (amountOfPlayers > 2));
System.out.println("You've selected " + amountOfPlayers+" player(s).");
}
}
- Comment pouvez-vous dire que votre scanner ne fonctionne plus? Ce comportement voyez-vous?
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que vous êtes à l'aide de java 7, ainsi vous obtenez un avertissement du compilateur, lorsque vous ne fermez pas la ressource, vous devez fermer votre scanner généralement dans un bloc finally.
Ou encore mieux: utiliser la nouvelle Essayez avec déclaration de ressources:
new Scanner(System.in)
être entouré avectry-catch
bloc?System.in
par vous-même? C'est le travail de la machine à l'arrêt.Selon la Javadoc de Scanner, il ferme le flux lorsque vous appelez la méthode close. En règle générale, le code qui crée une ressource est également responsable pour la refermer. Système.n'était pas instancié par votre code, mais par la VM. Dans ce cas, il est sûr de ne pas fermer le Scanner, ignorer l'avertissement et d'ajouter un commentaire pourquoi vous l'ignorer. La VM va prendre soin de la fermer si nécessaire.
(Hors-sujet: au lieu de "montant", le mot "nombre" serait plus approprié d'utiliser pour un certain nombre de joueurs. L'anglais n'est pas ma langue maternelle (je suis néerlandais) et j'ai utilisé pour faire exactement la même erreur.)
Voici quelques une meilleure utilisation de java pour scanner
Essayer cette