Array anstatt Begriffe als Indizes

JensMander

Bekanntes Mitglied
Hallo Forum,
ich habe ein Array:

Tabelle[5][4][3];

Wenn ich nun einen Wert extrahieren möchte rufe ich diesen Wert über:
System.out.println(Tabelle[3][2][0]) auf, das klappt auch. Aber ich bilde mir ein das es auch irgendwie möglich ist Werte per Begriff abzufragen:
Tabelle[3][2][minWert] oder Tabelle[3][2][maxWert] und diese auch dementsprechend zu setzen. Ist dieses so wirklich möglich oder irre ich mich da gänzlich. Mir fehlt leider gerade meine Insel und online habe ich noch ncihts gefunden.
mfg
Jenner
 
mit der dritten Dimension eines Arrays sollte das doch nichts zu tun haben oder spielst du speziell auf unterschiedliche Längen der Teilarrays an?

eher ist doch ein eindimensionales Array und dann Tabelle[minWert] dasselbe?

was du nun mit minWert/maxWert meinst ist unklar,
falls es entsprechend benannte Variablen gibt, Typ int, kann man diese natürlich verwenden,
ich blicke zurück und finde dein erstes Thema im Forum
http://www.java-forum.org/java-basi...umme-aufeinander-folgenden-floats-arrays.html
mit Code a la
Java:
for (int i = 25; i <= 48; i++) {
                summe = summe + Float.valueOf(currentArray[i]).floatValue()/100;
nichts anders als die Variable i dort wäre eine Variable minWert, ganz normal

---

der kleinste Index in einem Array ist immer 0, der höchste array.length-1
 
Okay, ich habe mich echt mies ausgedrückt.

Als Beispiel reicht auch ein eindimensionales Array

nennen wir es Preise und dieses hat 3 Werte, wir befinden uns jetzt in einer Bäckerei mit 3 Produkten (Brötchen, Kuchen, Brot)

Nun möchte ich gerne das an der Stelle 0 der Preis für Brötchen steht, dafür würde ich schreiben:

Preise[0] = 0.45 und zum Abrufen eben System.out.print("Brötchenpreis: "+Preise[0]);

cooler wäre es jedoch, wenn ich schreiben könnte:
Preise[Brötchen] = 0.45 und beim Abrufen dementsprechend System.out.print("Brötchenpreis: "+Preise[Brötchen]);


mfg
Jenner
 
was 'Brötchen' ist, verschweigst du wie zuvor minWert,
ist es eine int-Variable, ein Variable mit Inhalt Objekt einer höheren Klasse (Produkt),
ein Enum-Wert,
geht es eher um einen String "Brötchen" usw.?

allgemein gibt zu Array noch die Alternative (Hash)Map Object -> Wert

map.put(Brötchen,0.45);
map.get(Brötchen);


Variablen klein schreiben!
 
int Brötchen = 0;

Macht aber irgendwie nicht viel Sinn. Ein 3D-Array ist hart an der Grenze dessen, was in Ausnahmefällen noch OK sein kann, aber ... dem Forenbereich nach, in dem das gepostet wurde, ist es NICHT OK 😉 Beschreib' vielleicht mal eine Abstraktionsstufe höher, was du eigentlich vorhast...
 
Ich löse es jetzt erstmal mit einem zweiten Objekt, indem sind die einzelnen Positionen dann gespeichert.

So das ich dann einfach nur ein Objekt Position erzeugen muss und dann bekomme ich die Preispositionen:

Preise[Position.getBrötchen()] ist zwar mehr Schreibaufwand, aber besser als mir immer die Zahlen zu merken.

mfg und vielen Dank
 
Hallo Marco,
ich wollte mir lediglich das Leben etwas einfacher machen, indem ich mir nicht die entsprechenden Positionsindizes merken muss, sondern dafür Wörter einfügen kann.
Ich benötige leider ein Mehrdimensionalesarray und ich denke das passt so auch ganz gut, läuft auch prima. Ich will nur eben lernen und schauen was sonst so alles in Java möglich ist.

mfg
Jenner
 
grundlegend ist zu verstehen, dass es in Java nur begrenzte Syntax gibt,
Zifferkombinationen = Zahlen sind Werte,
Buchstabenkombinationen, ab der zweiten Stelle evtl. mit Ziffern drin sind entweder Java-Syntax (for), oder Klassennamen, Methodennamen, Variablennamen, usw., in Anführungszeichen noch Strings, Kommentare gibts auch noch,
daraus kann man sich seine Programme zusammenbauen,

ein virtuelles Brötchen gibts nicht, wenn du aber entsprechende (statische) Variablen baust, z.B. gleich int mit passenden Wert,
dann kannst du natürlich array[Brötchen] hinschreiben, wie array, da gibts keinen Unterschied
 
Ja, mir war nur so als würde es irgendeine Aufruf geben der so aussieht

Array[]= [{'Position1'=> 0}{}{}{}]
So das ich dann eben nicht Array[0] schreiben muss.
mir ist bewusst das ich auch schreiben kann:

int Position1= 0;
Array[Position1]
 
ja eine Hashmap...

Java:
  public static void main(String[] args) throws InterruptedException {
        HashMap<String, Double> preise = new HashMap<String, Double>();
        preise.put("Bier", 1.5);
        preise.put("Wein", 2.0);
        preise.put("Schnaps", 0.5);
        
        System.out.println("Bier kostet: "+preise.get("Bier"));
        
    }
 
also wie oben schonmal erwänt gibt es dictionarys.
das ist ein "Array", wo die einträge (key, wert)-paare sind.

Java:
Map preise = new (zb) HashMap<String, Double>();

die maps gehören mit zu den generischen klassen. Das heißt du kannst in den eckigen klammern verschiedene KLASSEN angeben, bei einer compilierung des programmes werden automtisch dann casts durchgeführt.
oben ein beispiel wäre dann

Java:
preise.put("brötchen", Double.valueof(0.15));
preise.get("brötchen"); //Doubleobekt mit 0.15

du kannst letzenendes auch via getKeys drüber iterieren

Java:
for(String key : preise.keySet())
   sysout(preise.get(key);

als zweite möglichkeit kannst du auch ein enum verwenden, ähnlich wie in c
is jedoch nicht so schick dynamisch wie die map, sondern sehr statisch, man muss den code anpassen wenn sich darin etwas ändert, also eher für zustände die imemr sich nicht ändern (zB, fest,flüssig,gasförmig da ändert sich eher weniger was)
Java:
Enum Waren
{
   Brötchen,
   Brote,
   Schrippen
}

waren.Brötchen.ordinal // glaube so heist es  oder so ähnlich um die pos zu bekommen (währe hier 0)

edit: ich tipp zuviel und zu lang ^^
 
Zuletzt bearbeitet:
Es ging ja um einen 3D-Array. Wenn da jetzt irgendwo eine
HashMap<String, HashMap<String, HashMap<String, Double>>> map
rauskommt, wäre das ein Beispiel für die vielen Gründe, weswegen ich genauer nachgefragt habe...
 

Zurück
Oben