Bonjour, j'ai ici un petit souci.. Je ne comprends absolument pas le problème
Merci de votre aide !
public class init {
HashMap<String, int []> hashmap = new HashMap<String, int []>();
int [] objet1 = new int [2] ;
int [] copie1 = new int[2] ;
int tmp0 ;
int tmp1 ;
String nom ;
String copie ; String entree ;
public void manuelle (Scanner sc){
System.out.println("Quel nom donner à cet objet ?");
nom = sc.nextLine() ;
System.out.print ("Donnez un nombre : ");
tmp0 = sc.nextInt();
System.out.print ("Donnez un nombre : ");
tmp1 = sc.nextInt();
objet1[0] = tmp0 ;
objet1[1]= tmp1 ;
hashmap.put(nom, objet1);
}
public void copier(Scanner sc){
System.out.println("Quel nom donner à cet objet ?");
String nom1 = sc.nextLine();
System.out.println("Quel objet copier ?");
copie = sc.nextLine();
copie1[0] = hashmap.get(copie)[0] ;
copie1[1] = hashmap.get(copie)[1] ;
hashmap.put(nom1, copie1);
}
public void afficher (Scanner sc){
System.out.println("Quel objet afficher ?");
entree = sc.nextLine();
System.out.println(entree + " : " + hashmap.get(entree)[0] + "h " + hashmap.get(entree)[1]);
}
public static void main (String[] args){
init in = new init () ;
Scanner sc = new Scanner (System.in);
in.manuelle(sc);
in.copier(sc);
in.manuelle(sc);
in.afficher(sc);
in.afficher(sc);
in.afficher(sc);
sc.close();
}
}
Output :
Quel nom donner à cet objet ? objet1 Donnez un nombre : 12 Donnez un nombre : 15 Quel nom donner à cet objet ? Quel objet copier ?
-> Je ne peux pas entrer le nom de cet objet et si j'entre un nouveau nom, l'exécution retourne une exception du fait que cette HashMap(key) n'existe pas, mais ça c'est normal
A ton avis pour get quelque chose faut qu'il soit put d'abord ou non ?
D'ailleurs je ne sais pas si c'est parce que tu n'as utilisé le boutton ou non mais la clé de la hashmap est bien une string donc get('copie') pour rester correct
Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: java;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
A ton avis pour get quelque chose faut qu'il soit put d'abord ou non ?
D'ailleurs je ne sais pas si c'est parce que tu n'as utilisé le boutton ou non mais la clé de la hashmap est bien une string donc get('copie') pour rester correct
- Edité par zvheer il y a environ 14 heures
"copie" est bien une String (cf l. 11) et en effet, pour get, il faut un put avant... Mais d'autre méthodes permette d'ajouter des éléments au Hashmap "manuellement". (Je n'ai pas mis tout le code, puisque tout le reste fonctionne) juste ici je ne comprends pas l'output..
l'erreur que tu sors signale clairement que la clé à laquelle tu tentes d'accéder n'est pas défini dans cette hashmap d'où ma question pense tu pouvoir accéder à quelque chose qui n'existe pas
si tu lis ton code dans son ordre d'exécution à aucun moment tu n'as mis une valeur dans la hashmap qui à la clé copie donc comment veux tu accéder a cette clé ? D'où l'exception key not found
Oui cette exception est bien normale, mais ce qui n'est pas normal c'est que je n'ai pas l'occasion d'entrer le nom de l'objet à copier... Les lignes 8 et 10 sont exécutées et la ligne 9 saute dans l'output, c'est ça que je ne comprends pas..
PS : je n'ai pas mis la totalité du code, il y a bien un hashmap.put(key, value) avant de faire appel à in.copier()
Ok, j'éviterai ce genre d'édit à l'avenir Ça fonctionne, merci, mais je ne comprends pas pourquoi le Scanner a besoin d'une entrée vide (qui n'appelle pas d'entrée). C'est comme s'il enregistrait une entrée sans qu'il y en ait eu..
Quand tu lis sur la console tu dois appuyer sur entrée pour récupérer la valeur le soucis est que entrée est aussi l'équivalent du saut de ligne `\n` donc ça reste en attente disons, à ton prochain nextLine il lira donc ce texte qui est resté et va donc sauter ce que toi tu voulais réellement faire.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
yasakani no magatama
yasakani no magatama
yasakani no magatama
yasakani no magatama
yasakani no magatama
yasakani no magatama