Bonjour à tous !
J'avais fait appel à vous pour un problème avec une Liste, maintenant que ce problème est résolu, le nouveau est lié à l'utilisation d'un Scanner.
Je définissais une méthode ajoutInventaire dans la class Personnage, qui ajoute un Objet o dans la LinkedList inventaire. Voulant brider la taille de l'inventaire à 10 places, je rajoute une condition : si inventaire.size() > 10, alors on propose à l'utilisateur de choisir entre garder les objets de son inventaire, ou en changer un pour prendre celui trouvé. Pour cela, on demande à l'utilisateur de répondre oui s'il souhaite échanger un objet contre celui trouvé, ou non s'il ne le souhaite pas (bon, j'ai pas encore fais le cas où l'utilisateur rentre n'importe quoi, mais chaque chose en son temps).
Je teste donc la méthode, en remplissant l'inventaire (qui se remplit correctement), jusqu'à arriver à 10 objets en son sein. A ce moment-là, un problème s'impose, je vous mets donc la méthode ajoutInventaire, ainsi que l'erreur en question :
Et voici l'exécution de mon test lorsqu'un inventaire est plein :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public void ajoutInventaire(Obj o) { if(inventaire.size() < 10) { inventaire.add(o); System.out.println("Objet "+o.getNom()+" ajouté à l'inventaire"); } else { System.out.println(); System.out.println("Inventaire plein, remplacer un item possédé par "+o.getNom()+" ?"); System.out.print("Repondre oui ou non : "); Scanner choixLacherObjet = new Scanner(System.in); String choixJoueur = choixLacherObjet.nextLine(); if(choixJoueur == "oui") { for(Obj ob : inventaire) { System.out.println(ob.getNom()); } System.out.println("Quel objet souhaitez-vous laisser ?"); System.out.println("Remplacer quel objet par "+o.getNom()); Scanner choixLacherObjet1 = new Scanner(System.in); String choix = choixLacherObjet1.nextLine(); choixLacherObjet1.close(); Obj objet = new Obj(); for(int i = 0 ; i < 10 ; i++) { if(inventaire.get(i).getNom() == choix) { objet = inventaire.get(i); } } inventaire.remove(objet); inventaire.add(o); } else { System.out.println("Vous laissez l'objet"); } choixLacherObjet.close(); } System.out.println(inventaire); }
Je précise que mon IDE ne m'indique aucune erreur et s'exécute normalement.Inventaire plein, remplacer un item possédé par Claymore ?
Repondre oui ou non : Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at testjeu/testjeu.Personnage.ajoutInventaire(Personnage.java:45)
at testjeu/testjeu.Combat.main(Combat.java:168)
J'espère vraiment que vous prendrez de nouveau le temps de m'aider, merci d'avance !
Partager