problem mit Hashtable

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • problem mit Hashtable

    Hallo, ich habe mich mal an der Cllection Hashtable versucht und ein sehr elegantes Programm :lol: zur Eingabe und Ausgabe von Emailadressen geschrieben. Sobald ich eine eingegebene Adresse allerdings abrufen möchte, wird mir als value NULL ausgegeben, die Werte werden also nicht im Hashtable gespeichert. Woran liegt das?

    Code:

    Quellcode

    1. import java.util.*;
    2. public class Collections {
    3. static Hashtable <String, String> hash= new Hashtable<String, String>();
    4. public static void main(String[] args) {
    5. while(true){
    6. int auswahl = auswahl();
    7. switch (auswahl){
    8. case 1: anlegen(); break;
    9. case 2: abrufen(); break;
    10. default: System.exit(0);
    11. }
    12. }
    13. }
    14. static String keyboard(){
    15. Scanner sc = new Scanner(System.in);
    16. return sc.next();
    17. }
    18. static int auswahl(){
    19. System.out.print("0:Prog. abbrechen\n1:neue Addr. anlegen \n2:Addr. anzeigen");
    20. Scanner sc = new Scanner(System.in);
    21. int i=Integer.parseInt(sc.next());
    22. if (i==1 || i==2 || i==0) return i;
    23. else {
    24. System.err.println("0,1 oder 2 eingeben!");
    25. return auswahl();
    26. }
    27. }
    28. static void anlegen(){
    29. System.out.print("Bitte geben sie den Namen ein: ");
    30. Scanner sc = new Scanner (System.in);
    31. String name=sc.next();
    32. System.out.print("Bitte geben sie die Email ein: ");
    33. String email=sc.next();
    34. hash.put(name,email);
    35. }
    36. static void abrufen(){
    37. System.out.print("Bitte geben sie den Namen ein: ");
    38. Scanner sc = new Scanner (System.in);
    39. System.out.println("Die gewünschte emailAddresse lautet:"+ hash.get(sc.hasNext()));
    40. }
    41. }
    Alles anzeigen
  • Programm Komplett

    Ich habe das Prog noch erweitert. Die Einträge werden jetzt bei Beenden des Programms in eine Textdatei geschrieben und beim Programmstart wieder ausgelesen:

    Quellcode

    1. import java.util.*;
    2. import java.io.*;
    3. public class Collections {
    4. static Hashtable <String, String> hash= new Hashtable<String, String>();
    5. public static void main(String[] args)
    6. throws FileNotFoundException {
    7. try {File f = new File("email.txt");
    8. Scanner sc = new Scanner(f);
    9. while(sc.hasNext())
    10. hash.put(sc.next(),sc.next());
    11. sc.close();
    12. }
    13. catch(FileNotFoundException e) {}
    14. while(true){
    15. switch (auswahl()){
    16. case 1: anlegen(); break;
    17. case 2: abrufen(); break;
    18. default: beenden();
    19. }
    20. }
    21. }
    22. static int auswahl(){
    23. System.out.print("0:Prog. abbrechen\n1:neue Addr. anlegen \n2:Addr. anzeigen");
    24. Scanner sc = new Scanner(System.in);
    25. int i=Integer.parseInt(sc.next());
    26. if (i==1 || i==2 || i==0) return i;
    27. else {
    28. System.err.println("0,1 oder 2 eingeben!");
    29. return auswahl();
    30. }
    31. }
    32. static void anlegen(){
    33. System.out.print("Bitte geben sie den Namen ein: ");
    34. Scanner sc = new Scanner (System.in);
    35. String name=sc.next();
    36. System.out.print("Bitte geben sie die Email ein: ");
    37. String email=sc.next();
    38. hash.put(name,email);
    39. }
    40. static void abrufen(){
    41. System.out.print("Bitte geben sie den Namen ein: ");
    42. Scanner sc = new Scanner (System.in);
    43. System.out.println("Die gewünschte emailAddresse lautet:"+ hash.get(sc.next()));
    44. }
    45. static void beenden()
    46. throws FileNotFoundException{
    47. Formatter f = new Formatter (new File("email.txt"));
    48. Enumeration e = hash.keys();
    49. while (e.hasMoreElements()){
    50. String s = ""+e.nextElement();
    51. f.format(s+" "+hash.get(s)+" ");
    52. }
    53. f.close();
    54. System.exit(0);
    55. }
    56. }
    Alles anzeigen