ADT Dictionary

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

  • ADT Dictionary

    Hallo Leute.

    Also ich bin neu hier und hab sofort ein kleines Problem. Hab schon Google durchwühlt, aber nichts gefunden was mir weiterhilft (Vielleicht war ich auch einfach nur zu blöd!).
    Na egal. Also wir nutzen bei uns in der Schule BlueJ und befassen uns zur Zeit mit ADTs.
    Stack und Queue haben wir schon hinter uns und nun kommt Dictionary an die Reihe.
    Unsere Aufgabe ist es so ein Dictionary-Ding zu programmieren und nun ja was soll ich sagen: Hab alles fertig bis auf die insert-Methode.
    Ich habs soweit, dass der neue String richtig eingefügt wird und die nachfolgenden um eine Position nach hinten verschoben werden, aber der neue String überschreibt den direkt auf ihn folgenden (Der String wird also doppelt eingefügt). Wäre für jede Hilfe dankbar.
    Ich bekomm es nämlich einfach nicht besser hin.

    Hier mein Quelltext (Bitte nicht über die Einfachheit wundern...):

    Quellcode

    1. public class Dictionary
    2. {
    3. String[] wörter;
    4. int max, anzahl;
    5. public Dictionary()
    6. {
    7. max = 100;
    8. wörter = new String[max];
    9. anzahl = 0;
    10. }
    11. public void insert(String x) //neuen String lexikalisch korrekt einfügen (von vorn herein)
    12. {
    13. int i = 0;
    14. int pos = 0;
    15. if (anzahl == 0)
    16. wörter[0] = x;
    17. else if (anzahl > 0 && anzahl < max)
    18. {
    19. while (x.compareToIgnoreCase(wörter[i]) > 1 && i < anzahl)
    20. {
    21. i++;
    22. pos = i + 2;
    23. }
    24. for (int b = anzahl + 1; b >= pos; b--)
    25. {
    26. wörter[b + 1] = wörter[b];
    27. wörter[pos] = x;
    28. }
    29. }
    30. anzahl++;
    31. show();
    32. }
    33. ...
    34. }
    Alles anzeigen



    Wäre echt super wenn mir jemand helfen könnte.
    Even Homer nods! But if you really want to f*ck up you'll need a computer!
  • Also für ein Wörterbuch würde ich die Klasse HashMap<K,V> verwenden...
    nur so ein tipp

    Hier ein Beispiel das ich mal programmiert habe:

    Quellcode

    1. import java.util.HashMap;
    2. import java.util.Map;
    3. import java.util.Set;
    4. public class Dictionary {
    5. private HashMap<String,String> dictionary;
    6. public Dictionary() {
    7. dictionary = new HashMap<String,String>();
    8. }
    9. public void put(String e, String d) {
    10. dictionary.put(e,d);
    11. }
    12. public String get(String e) {
    13. if(e != null)
    14. return dictionary.get(e);
    15. else
    16. return null;
    17. }
    18. public String remove(String e) {
    19. if(e != null) {
    20. dictionary.remove(e);
    21. return dictionary.get(e);
    22. }
    23. else
    24. return null;
    25. }
    26. public boolean contains(String s) {
    27. if(dictionary.containsKey(s) || dictionary.containsValue(s))
    28. return true;
    29. else
    30. return false;
    31. }
    32. public int size() {
    33. return dictionary.size();
    34. }
    35. public String longestKey() {
    36. String longestKey = "";
    37. for(String s : dictionary.keySet())
    38. if(s.length() > longestKey.length())
    39. longestKey = s;
    40. return longestKey;
    41. }
    42. public String longestValue() {
    43. String longestValue = "";
    44. for(String s : dictionary.values())
    45. if(s.length() > longestValue.length())
    46. longestValue = s;
    47. return longestValue;
    48. }
    49. public void print() {
    50. Set<Map.Entry<String,String>> set = dictionary.entrySet();
    51. for(Map.Entry<String,String> kv : set)
    52. System.out.println(kv.getKey() + " = " + kv.getValue());
    53. }
    54. public static void main(String[] args) {
    55. final Dictionary d = new Dictionary();
    56. d.put("accountancy","Rechnungswesen");
    57. d.put("Hello World", "Hallo Welt");
    58. d.put("white", "weiss");
    59. System.out.println(d.get("white"));
    60. System.out.println(d.get("falsch"));
    61. System.out.println(d.get("accountancy"));
    62. System.out.println(d.size());
    63. d.print();
    64. System.out.println(d.remove("white"));
    65. System.out.println(d.contains("Hallo Welt"));
    66. System.out.println(d.size());
    67. System.out.println(d.longestKey());
    68. System.out.println(d.longestValue());
    69. d.print();
    70. }
    71. }
    Alles anzeigen


    Hoffe das kann dir weiterhelfen.
  • Wenn du willst verändere es wie du willst es ist halt für anfänger...
    :)
    Damit sie sich auskennen

    er hat ja gesagt dass er eine inset methode brauch das ist die void put(String e, String d); methode
    woher soll der junge wissen dass es eine put metode gibt?
    wenn er eh nicht mit hashmap soweit ist dann ein bisschen hilfe braucht er doch :)