Collections Geeignete Collection/Liste/Datenbank

Tobias get

Mitglied
Hallo Leute

Das erste Projekt steht bald an und es geht um einen Währungsrechner. In der Aufgabe steht zwar ein "geeignetes Array" zu verwenden, aber ich weiß nicht so recht wie man in einem simplen Array einen Double-Wert einem String (Währung) zuordnet.

Und zwar sieht das etwa so aus:
"Euro" : 1.212
"US Dollar" : 1.384
"Australische Dollar" : 1.923
"Korean won": 1528.123
usw. (hier zb grad im json format)

Meine Frage wäre welche Collection oder Ähnliches würde sich denn hierfür gut eignen und wäre z.b. bei der "Währungssuche" relativ einfach umzusetzen (vorhandene Methoden)? Wenn ich das richtig verstanden habe nennt sich das parsen?
Gewünscht ist z.b. beim Eingeben von "dol" alle Währungen/Strings die dol enthalten, also alle Dollars angezeigt zu bekommen und dann nochmals daraus auszuwählen.

Kurzes Googlen ergibt zb. Hashmap - ein Tutor hat was von Json gemeint. Bei Letzterem hab ich mich kurz eingelesen, aber finde grad auf die Schnelle nicht wie man hier auch nach nur einem Teil des Strings sucht und es wirkt auf Anhieb etwas komplex. Falls ich doch auf dem richtigen Weg bin, kann mir wer ein kurzes Bsp. geben wie die Teilsuche mit Jsonobject.get("..dol..") oder wie auch immer richtig ausgedrückt wird?

Vielleicht kennt ja wer eine einfachere Lösung die Daten zu verarbeiten (derzeit als .txt gespeichert). Ein Link mit ähnlich einfachem Beispiel bzw. ein paar Stichworte nach denen ich am besten suchen sollte würden schon helfen.

Vielen Dank für die Aufmerksamkeit
Besten Gruß
 
Zuletzt bearbeitet:
In der Aufgabe steht zwar ein "geeignetes Array" zu verwenden, aber ich weiß nicht so recht wie man in einem simplen Array einen Double-Wert einem String (Währung) zuordnet
Damit sind ganz bestimmt die Listen gemeint. Eine ArrayList arbeitet zum Beispiel mit einem Array zusammen.
ein Tutor hat was von Json gemeint
Da gibt es sicherlich mehrere Wege, wie man es bewerkstelligt.
Ich würde mir ein Objekt "Währung" erstellen, welches von allen Währungen vererbt wird, welche wiederum als Wert den Umrechnungswert haben. So kannst du sehr einfach mehrere Währungen aufbewahren und den Wert aller Währungen in Dollar usw. angeben.
 
Ich würde auch eine eigene Klasse definieren, die dir den Namen und den Umrechnungsfaktor (?) zusammen packt.
Ob du dann eine Liste oder ein Array nimmst ist Geschmackssache. Würde sicherlich nur einen Unterschied machen, wenn du zur Laufzeit neue Währungen hinzufügen lassen willst.
 
@Tobias get kannst Du mal den genauen Wortlaut wiedergeben? Wenn da Array steht, musst Du auch mit Arrays arbeiten. Wenn eine Textdatei vorgegeben ist, musst Du mit dieser arbeiten. Lösungen gibt es wie Sand am Meer, die Frage ist halt, welche in Deiner Aufgabe gefordert wird.
 
Also unabhängig von der "geeigneten" Collection, hier ein kleines Beispiel für JSON:
Java:
import java.io.StringReader;
import javax.json.*;

public class JsonDemo {

  public static void main(String[] args) {
    final String str =
        "{" + "\n" +
            "\"Euro\" : 1.212" + ",\n" +
            "\"US Dollar\" : 1.384" + ",\n" +
            "\"Australische Dollar\" : 1.923" + ",\n" +
            "\"Korean won\": 1528.123" + "\n" +
        "}";
 
    final String filterFor = "Dol";
 
    JsonObject obj = Json.createReader(new StringReader(str)).readObject();
 
    obj.entrySet().stream()
      .filter(entry -> entry.getKey().contains(filterFor))
      .forEach(System.out::println);
  }
}

prints:
Code:
US Dollar=1.384
Australische Dollar=1.923

Im engen Sinne unterscheidet sich aber ein Json nicht viel von einer Map. Du hast bei beiden Keys und Values. Der Zugriff auf beide Objekte wird in vielen Sprachen syntaktisch nicht unterschieden.
 
Ok danke schonmal Leute,
Vererbung haben wir zb. erst morgen und besitze grad auch nur gefährliches Halbwissen dazu.
Also unabhängig von der "geeigneten" Collection, hier ein kleines Beispiel für JSON:
Java:
    obj.entrySet().stream()
      .filter(entry -> entry.getKey().contains(filterFor))
      .forEach(System.out::println);
Danke auch für das Json Beispiel, das war wonach ich dabei gesucht habe.

@Tobias get kannst Du mal den genauen Wortlaut wiedergeben? Wenn da Array steht, musst Du auch mit Arrays arbeiten. Wenn eine Textdatei vorgegeben ist, musst Du mit dieser arbeiten. Lösungen gibt es wie Sand am Meer, die Frage ist halt, welche in Deiner Aufgabe gefordert wird.
1) Choose a suitable representation which allows for defining currencies among with their corresponding conversion rates [..Tabellenlink..] These allow for a simple text file representation e.g. currencies.txt:
2) Write a Class which reads the above table and stores all currencies among with their rates in a suitable array.
Also relativ schwammig formuliert ^^
 
Hi! Die Frage gab es in Hausaufgaben schonmal - und da habe ich für Umrechnungen eine Datenstruktur ein Zweidimensionales Array als Tabelle gewählt: https://www.java-forum.org/thema/joptionpane.183063/#post-1166285 🙂

Noch online? Für JSON kann man eine Library hernehmen....
Für ein solches Array müsste er aber eher csv nehmen, geht natürlich auch... Ein solches Array in Verbindung mit Json empfehle ich nicht. Aber selbst als csv ist ein Object-Array irgendwie langweilig 😛 Interessanter ist dann OpenCSV 😛
 
Nein hast Du nicht oder wenn dann nur indirekt, wenn Du sagt dass das in den JOptionPane-Thema alles quatsch wäre oder man so Umrechnungen nicht machte. 😉 Sorry wenn es unfreundlich klang.
 
meanwhile versteh ich hier als Erstsemestler eh nur bahnhof und muss jeden Begriff erstmal googeln, dabei hatten wir noch nichtmal Vererbung/Collections ^^
Dachte nur ich mach mich während der Feiertage schonmal ans Projekt um in der Klausurzeit genug Luft fürs Lernen zu haben.
Problem ist nur bevor ich mich jetzt ans Interface/Scanner samt Exceptions usw. mache, wollt ich eben nen Ratschlag haben wie man das Prozedere mit den Daten am einfachsten löst. Aber vielleicht ist mein Ansatz auch völlig verkehrt und ich fang erst "außen" an , denke aber nicht oder 😛?
Wie gesagt Json hat nur ein Tutor empfohlen "damit ginge es ganz gut" und ich habe mich in der Übung etwas erkundigt. Aber es ist jetzt nicht vorgegeben noch "will ich das unbedingt" so angehen.
 
Ok, alles gut 🙂

Du ich finde das schon toll, dass du dich über deinen aktuellen Horizont beschäftigen möchtest. Aber ja, vielleicht ist es besser erstmal im "inneren" anzufangen.
 
meanwhile versteh ich hier als Erstsemestler eh nur bahnhof
bis zu den Prüfungen ist nicht mehr lang....

um in der Klausurzeit genug Luft fürs Lernen zu haben
wenn Du währenddessen hyperventilierst wäre das auch nicht so gut 😉

Wie gesagt Json hat nur ein Tutor empfohlen "damit ginge es ganz gut" und ich habe mich in der Übung etwas erkundigt
google/gson. 😉😳
 

Zurück
Oben