Speichern von einem Namen und einer dazugehörigen Kette aus Zahlen
-
Ich habe in der Schule die Aufgabe bekommen, ein kleines Notenverwaltungsprogramm
zu schreiben, man soll den Schülernamen eingeben können und es soll nachsehen,
ob der name bereits existiert und dort die Note anhängen bzw. den Namen eintragen
und dann die Note anhängen.
Es sollen max 30Schüler sein und 33Noten, sprich die Größen sind bekannt, man
braucht also keinen dynamischen Faktor, wobei ich so etwas natürlich immer einbauen,
werde damit man es mal eben schnell durch das ändern von 2Variablen beliebig
vergrößern kann.Nun stellt sich mir die Frage wie ich das am effektivsten löse, unser Lehrer
meinte wir sollen ein 2D-Stringarray (String[][]) verwenden, aber ich bin mir
nicht so ganz sicher ob es wirklich nötig ist, sowas komplett neu zu schreiben,
gibt doch sicher etwas vergleichbares zur map aus C++. Es wäre auch angenehmer,
wenn ich die Zahlen als double speichern könnte und sie nicht jedes mal umwandeln
müsste.Habe daher nun mehrere Ansätze:
Klasse die intern mit einem String[][] arbeitet und mir sämtliche Arbeit abnimmt,
sprich ich erfinde das Rad neu.
Eine Klasse, welches eine Liste aus Objekten darstellt, welche den Namen und
beliebig viele (festgelegt, durch oben genannte variable) double- Werte aufnehmen
kann.
Aber auch hier müsste ich wieder ziemlich viel schreiben.Es gibt doch sicher was fertiges in Java oder?
-
Klar gibt es das.
Viel programmieren müßte man dafür nicht... nur eher viel lesen, um zu verstehen, wie man es anwendet
Map in C++ kenn ich persönlich nicht, aber unter Java gibt es einige verschiedene Maps. Denke mal eine HashMap sollte reichen.
Dafür müßtest Du Dir in der Doku von Java die Klassen anschauen:
java.util.HashMap
java.util.Iterator
java.lang.Double, Integer oder FloatHashMap zum speichern der Daten der Form:
Key - Value
Key könnte z.B. der Name sein (Keys müßen untereinander immer eindeutig sein) und Value die Note (Inhalt kann öfter vorkommen).Iterator brauchst Du um an alle Daten bequem wieder heranzukommen.
Und Double, etc um die Noten zu speichern, da Maps (bzw. alle Collection Klassen) nur Objekte und keine primitiven Datentypen speichern können.
Damit wäre dann auch alles dynamisch.
Aber ich denke, damit wärst Du Deiner gestellten Aufgabe weit über das eigentliche Ziel hinausgeschossen ... ABER, wenn Du das mit der Map verstanden hast, dann kannst Du genauso, bzw. sehr ähnlich mit allen anderen Containern unter Java arbeiten ... nur würde ich zum lernen nicht unbedingt mit einer Map anfangen
-
Danke für deine Hilfe, heute Abend habe ich zwar kein Kopf mehr dazu, aber Morgen
schaue ich mir das einmal an
Ich denke das Grundprinzip wird ähnlich wie bei C++ sein, dort verwendet man auch
Iteratoren um die einzelnen Elemente durchzugehen, allerdings ist die Map dort
keine Hashmap, sprich pro Key gibts nur ein Value.