3 Dimensionales Array mit

Funkeyfreak

Aktives Mitglied
Moin,

ich habe das Problem, dass ich die Aufgabenstellung habe, dass ich ein Regal programmieren soll welches eine Länge X, eine Breite Y und jeweils zwei Einteiler in einem Fach hat, welches dieses in 3 Abschnitte (Z1,Z2,Z3) teilt.

Nun habe ich mir gedacht dass ich dies mit einem Dreidimensionalen Array programmieren kann:
int array [] [] []= new int [12] [8] [3]; -> Länge X=12, Breite Y=8 und jedes Fach hat 3 Einteiler.
-> Problem ist, dass es ja eig nur ein 2 dimensionales array ist, welches jede Spalte in 3 Einteiler unterteilt hat. D.h. ich kann das mit den 3 dimensional vergessen.

also: int array [] [] = new int [12] [8];
Nun hat jedes Fach in einer Reihe eine bestimmte Kapazität -> Reihe1 = 150 Reihe2 =40, Reihe3 =45 ... bis Reihe 8. (also Reihe = Breite)
-> d.h. Y1,X1 150 Kapazität, Y1,X2 150 Kapazität... Y2,X1 = 40 Kapazität, Y2,X2=40 Kapazität...

Frage ist nun wie kann ein zweidimensionales Array erstellen welches Kapazitäten hat und ebenfalls in jeder Spalte ein Fach mit 3 Einteiler hat. (es ist nicht angegeben wie die Kapazität in den drei Einteilern verteilt ist.)

PS: Dies ist nur ein kleiner Teil vom ganzen, damit meine ich dass dies zu einem großen Programm gehören soll, welches mit GUI und ner Datenbank funktioniert. Die Logistik muss ich nicht machen, lediglich die Regale programmieren.
Wenn jemand mir einen Ansatz geben könnte, wie ich sowas programmieren kann, wäre ich sehr glücklich. Problem ist nämlich, dass ich weiß was ich machen muss, nur habe ich keine ahnung wie ich es umsetzen soll.
 

temi

Top Contributor
Dies ist nur ein kleiner Teil vom ganzen, damit meine ich dass dies zu einem großen Programm gehören soll, welches mit GUI und ner Datenbank funktioniert. Die Logistik muss ich nicht machen, lediglich die Regale programmieren.

Wird das ein ernsthaft eingesetztes Projekt oder ist es nur eine Übung?

Als Übung ist es in Ordnung, wenn du mit Arrays experimentierst. Ansonsten würde man einen eher objektorientierten Ansatz suchen.

Edit:

Nun hat jedes Fach in einer Reihe eine bestimmte Kapazität

Was ist denn Kapazität jetzt nun wieder? Ergibt sich die Kapazität einer Reihe nicht aus Anzahl der Fächer (= Spalten) x 3 (3 Abschnitte pro Fach)?
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
dass ich ein Regal programmieren soll welches eine Länge X, eine Breite Y und jeweils zwei Einteiler in einem Fach hat, welches dieses in 3 Abschnitte (Z1,Z2,Z3) teilt.
Für mich ist deine Problembeschreibung schon mal unklar: Wo genau besteht bei dir der Unterschied zwischen "Breite" und "Länge" eines Regals? Allgemein gibt es Breite, Höhe und Tiefe. Was ist bei dir "Länge"?
Desweiten: Die Maße des Regals sind doch eigentlich uninteressant. Wichtig ist doch nur, in wie viele Teile das Regal entlang seiner Breite/Horizontalen und entlang seiner Höhe/Vertikalen aufgeteilt sind.
Wenn das Regal entlang seiner Breite also in 12 "Spalten" unterteilt ist und entlang seiner Höhe in 8 "Zeilen", dann ist das schonmal ein zweidimensionales Array, da wir ja zwei Dimensionen benötigen. Wenn jetzt jede "Zelle" in diesem Regal nochmal eine Dreiteilung hat, dann kann das als weitere Dimension angesehen werden und du könntest hierfür ein dreidimensionales Array verwenden.
 

Funkeyfreak

Aktives Mitglied
@httpdigest also ein dreidimensionales array benutzen? Aber wie kann ich dort die Kapazität benutzen?
Theoretisch müsste ich eine Abfrage machen wie viele VE pro Spalte eingetragen ist oder?

https://gyazo.com/68f0a463f954be2d844c3d02db8daec7 -> hier mal ein Foto was ich mit X und Y meine. Und jede spalte von X1,Y1, X1,Y2 etc. hat eine bestimmte kapazität.
d.h. ein Fach welches in 3 Teile aufgeteilt ist hat diese bestimmte Kapazität -> Bsp: Y1,X1 ist ein Fach welches aus 3 Teile besteht und insgesamt eine Kapazität von 150 hat.
 

temi

Top Contributor
So mal als Ansatz:

Java:
class Fach {
    private int kapazitaet;
    
    public Fach(int kapazitaet) {
        this.kapazitaet = kapazitaet;
    }

    public int getKapazitaet() {
        return this.kapazitaet;
    }
}

class Regal {
    private Map<Integer, Fach> faecher = new HashMap<>();

    public void  add(Fach fach, int x, int y) {
        faecher.put(x * y, fach);
    }

    public void remove( int x, int y) {
        faecher.remove(x * y);
    }

    public Fach getFach(int x, int y) {
        return faecher.get(x * y);
    }
}
 

Funkeyfreak

Aktives Mitglied
Also ich habe mal einen anderen Weg eingeschlagen und bin soweit gekommen. Jedoch bekomme ich nun die Fehlermeldung
"Exception in thread "main" java.lang.NullPointerException
at Design.test.main(test.java:21)"
Ich hab keine ahnung woran es liegt... Ich habe schon probiert den Fehler durch nen System.out.println anweisung auswendig zu machen aber habe nichts gefunden...


Code:
package Design;

public class Regelfach {
    private double fachVeKapazität;
    private double aktuelleVE;
    private double z1,z2,z3;
    private String nr;
   
    public Regelfach(double Fassungsvermögen, String Nummer) {
        this.fachVeKapazität = Fassungsvermögen;
        z1 = Fassungsvermögen / 3;
        z2 = Fassungsvermögen / 3;
        z3 = Fassungsvermögen / 3;
    }
   


    public int istFachVoll(int aktuelleVE, int fachVeKapazität) {
        // mit getter und setter das machen
        if (fachVeKapazität > aktuelleVE) {
            int nochfreiVE= fachVeKapazität - aktuelleVE;
            System.out.println(nochfreiVE);
            return nochfreiVE;
        }
        else {
            int nochfreiVE = fachVeKapazität - aktuelleVE;
            System.out.println("Das Fach ist voll!");
            return nochfreiVE;
        }
    }
   
   
   
    public double getFachVeKapazität() {
        return fachVeKapazität;
    }
    public void setFachVeKapazität(double fachVeKapazität) {
        this.fachVeKapazität = fachVeKapazität;
    }
    public double getAktuelleVE() {
        return aktuelleVE;
    }
    public void setAktuelleVE(double aktuelleVE) {
        this.aktuelleVE = aktuelleVE;
    }
    public double getZ1() {
        return z1;
    }
    public void setZ1(double z1) {
        this.z1 = z1;
    }
    public double getZ2() {
        return z2;
    }
    public void setZ2(double z2) {
        this.z2 = z2;
    }
    public double getZ3() {
        return z3;
    }
    public void setZ3(double z3) {
        this.z3 = z3;
    }
    public String getNr() {
        return nr;
    }
    public void setNr(String nr) {
        this.nr = nr;
    }
   
}

package Design;



Code:
import java.util.ArrayList;

public class HalbhohesRegal extends Regal {
   
    private int längeX;
    private int breiteY;
    private double tiefe; //einfache mittlere und große     -> normale VE, 25% mehr, 100% mehr
    private String Breite; //volle Breite/Drittel Breite
   
    private Regelfach[][] Fach = new Regelfach [12] [8];
   
   
    HalbhohesRegal (String NummerD, String BreiteD, String tiefeD){
       
        Fach = new Regelfach [12] [8];
        setNummer(NummerD);
        this.Breite = BreiteD;
        if(tiefeD =="VolleBreite") {
            längeX=12;
            breiteY=8;
        }
        if(tiefeD == "DrittelBreite")  {
            längeX=4;
            breiteY=8;
        }
       
        if(tiefeD == "einfacheTiefe") {
            tiefe =1.0;
        }
        if(tiefeD == "mittlereTiefe") {
            tiefe = 1.25;
        }
        if(tiefeD == "großeTiefe") {
            tiefe = 2.0;
        }
       
       
        // Es wird das Fassungsvermögen für jedes Regalfach ausgerechnet
        for (int i=0;i<längeX;i++) {
            Fach[i][0] = new Regelfach (150*tiefe, getNummer());
            }
        for (int i=0;i<längeX;i++) {
            Fach[i][1] = new Regelfach (40*tiefe, getNummer());
        }
        for (int i=0;i<längeX;i++) {
            Fach[i][2] = new Regelfach (45*tiefe, getNummer());
        }
        for (int i=0;i<längeX;i++) {
            Fach[i][3] = new Regelfach (60*tiefe, getNummer());
        }
        for (int i=0;i<längeX;i++) {
            Fach[i][4] = new Regelfach (60*tiefe, getNummer());
        }
        for (int i=0;i<längeX;i++) {
            Fach[i][5] = new Regelfach (50*tiefe,  getNummer());
        }
        for (int i=0;i<längeX;i++) {
            Fach[i][6] = new Regelfach (95*tiefe,  getNummer());
        }
        for (int i=0;i<längeX;i++) {
            Fach[i][7] = new Regelfach (140*tiefe,  getNummer());
        }
            }
        //als nächstes Regalnummer ausgeben und Breite-Länge mitgeben um später kürzesten weg zu finden
       
       
       
   
   
    public Regelfach getHalbhohesRegel (int x, int y) {
        return Fach [x] [y];
    }
   
    public int getLängeX() {
        return längeX;
    }

    public void setLängeX(int längeX) {
        this.längeX = längeX;
    }

    public int getBreiteY() {
        return breiteY;
    }

    public void setBreiteY(int breiteY) {
        this.breiteY = breiteY;
    }
   
    public double getTiefe() {
        return tiefe;
    }

    public void setTiefe(double tiefe) {
        this.tiefe = tiefe;
    }

    public String getBreite() {
        return Breite;
    }

    public void setBreite(String breite) {
        Breite = breite;
    }

    public Regelfach[][] getFach() {
        return Fach;
    }

    public void setFach(Regelfach[][] fach) {
        Fach = fach;
    }
}
 

temi

Top Contributor
Also ich habe mal einen anderen Weg eingeschlagen und bin soweit gekommen. Jedoch bekomme ich nun die Fehlermeldung
"Exception in thread "main" java.lang.NullPointerException

Du versuchst irgendwo auf einen Wert zuzugreifen, der Null ist. Wo? Keine Ahnung.

Ansonsten. Ja. Was soll man sagen. Da ist ziemlich viel, sagen wir mal, Unschönes zu sehen. Das geht bei einfachen Konventionen los, wie lowerCamelCase für Variablennamen und endet bei einem kaum enden wollenden Einsatz von magic values. Ich habe die genauen Anforderungen aus deinen bisherigen Erklärungen noch nicht verstanden, aber ich kann dir jetzt schon sagen: das geht besser. Und vermutlich einfacher. Und übersichtlicher.

Allerdings vermute ich jetzt mal, dass es sich bei dir um einen Java-Anfänger handelt und das es sich hier um ein Übungsprojekt handelt. Das wird schon noch.
 

Phash

Top Contributor
Funky... hast du schonmal was von räumlichen Körpern gehört?
Code:
    public Regelfach(double Fassungsvermögen, String Nummer) {
        this.fachVeKapazität = Fassungsvermögen;
        z1 = Fassungsvermögen / 3;
        z2 = Fassungsvermögen / 3;
        z3 = Fassungsvermögen / 3;
    }
Das ist einfach nicht richtig...
Mal davon ab, dass man Variablen klein und ohne Umlaute schreibt...
Wenn du hier als Fassungsvermögen 10 reinwirfst, dann hat z1 / 2 / 3 je 10/3 wasauchimmer
Bleiben wir mal beim Holzregal:
10 Regalböden (Zeilen) mit je
10 Abtrennungen / Fächern (Spalten) mit je
10 Einsteckplätzen (Ablagen etc)

das heisst, du hast nicht 30 Fassungsvermögen sondern 10*10*10 = 1000 gibst du in deine Funktion 1000 ein, hast du z1/2/3 von 333.3 ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
A Datentypen 2 dimensionales Array drehen Allgemeine Java-Themen 8
pikay TXT-Datei in 2-Dimensionales Array Einlesen Allgemeine Java-Themen 8
C 3 dimensionales Array Allgemeine Java-Themen 5
P 3-dimensionales Array in 1-dimensionales umwandeln Allgemeine Java-Themen 10
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
J Array-List Bubble-Sort Allgemeine Java-Themen 12
4 Variablen Int-Array Int Zuweisen Allgemeine Java-Themen 7
J Array Allgemeine Java-Themen 8
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
A Vector Strings in Array splitten Allgemeine Java-Themen 6
I Muster in Array suchen Allgemeine Java-Themen 10
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
R Wärmeleitung, 3d-Array Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben