Comment ajouter des éléments à une table de hachage?

Je suis nouveau sur HashMaps. Je me demandais si je pouvais ajouter de demander à l'utilisateur ce qu'il ou elle voulait être et ce qu'ils voulaient la valeur de l'être. Jusqu'à présent, je suis arriver la table de hachage à imprimer, mais pour une raison quelconque, quand je demande l'affichage de la valeur qu'elle renvoie null et quand j'essaie de retirer la clé, il ne met pas à l'enlever.

import java.util.Scanner;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapDemo {
public static void main (String [] args){
//declaring a hashmap   
HashMap<Integer, String> hm = new HashMap<Integer, String>();
//adding elements to the hashmap
hm.put(1, "Josh");
hm.put(2, "Max");
hm.put(3, "Karan");
//declaring the Scanner
Scanner sc = new Scanner(System.in);
System.out.println("Would you like to add Elements to the hashmap?");
String scYN = sc.nextLine();
scYN = scYN.toLowerCase();
if(scYN.equals("yes")) {
System.out.println("What would the key to be?");
int key = sc.nextInt();
sc.nextLine();
System.out.println("What would the value to be?");
String val = sc.nextLine();
hm.put(key, val);           
}else if (scYN.equals("no")) {
System.out.println("False");
}else{
System.out.println("False");
}
//displaying content 
Set set = hm.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()){
Map.Entry mentry = (Map.Entry)iterator.next();
System.out.print("Key is: "+ mentry.getKey() + " & Value is: ");
System.out.println(mentry.getValue());
}
/* Get values based on key*/
System.out.println("What value would you like to find?");
String fVal = sc.nextLine();        
String var= hm.get(fVal);
System.out.println("Value at index " + fVal + " is: "+ var);
/* Remove values based on key*/
System.out.println("Would you like to remove a key?");
String remKey = sc.nextLine();
hm.remove(remKey);
System.out.println("Map key and values after removal:");
Set set2 = hm.entrySet();
Iterator iterator2 = set2.iterator();
while(iterator2.hasNext()) {
Map.Entry mentry2 = (Map.Entry)iterator2.next();
System.out.print("Key is: "+mentry2.getKey() + " & Value is: ");
System.out.println(mentry2.getValue());
}
}

}

Je vous remercie pour votre temps

Vous êtes le stockage Integer clés et de tenter de récupérer String clés.
Votre carte clé est un Integer, donc si vous essayez d'utiliser get() sur un String vous êtes voué à l'échec. (Même si le String ressemble à l'entier vous le souhaitez; Java ne sera pas automatiquement de convertir un entier pour vous. Vous avez à faire vous-même.)
La solution facile est de stocker des clés de Chaîne, c'est à dire put("1", "foo")
Par la manière, l'utilisation Integer classe ici plutôt que de int primitives. Java Collections de stocker uniquement des objets, pas des primitives. Afin de vous faire de Java ne auto-boxing inutilement. Pas un gros problème dans ce code, mais quelque chose d'être conscient de.

OriginalL'auteur Jghorton14 | 2016-11-29