Getter für Array

Tobser

Mitglied
Hi, ich steh hier gerade vor einem Problem, mit dem ich einfach nicht voran komme. Grob gesagt, ich habe in einer Klasse ein Array erstellt und gefüllt und möchte innerhalb einer anderen Klasse auf dieses Array zugreifen. Mein Lösungsansatz ist eine Getter-Methode. Aber irgendwie will das nicht funktionieren. Hat jemand einen Tipp für mich?
Java:
public class Element {
   public int Elementnummer;
   public int Elementlaenge;
   int Elementflaechenmoment;
   int ElementEModul;
   
   public Element(int Elementnummer, int Elementlaenge, int Elementflaechenmoment, int ElementEModul){
       this.Elementnummer=Elementnummer;
       this.Elementlaenge=Elementlaenge;
       this.Elementflaechenmoment=Elementflaechenmoment;
       this.ElementEModul=ElementEModul;
   }
}
Das Array ist vom Typ Element.
Java:
public class Modell {
   
   //Attribute
   static int AnzahlLasten=0;
   static int AnzahlLager=0;
   static int maxAnzahlLast=10;
   static int maxAnzahlLager=10;
   static int Modelllaenge;
   static int Modellflaechenmoment;
   static int ModellEModul;
   static Last Kraft []=new Last[maxAnzahlLast];
   static Lagerung Lager[]=new Lagerung[maxAnzahlLager];
   static int Elementanzahl=0;
   static Element Elem[];
   static int merkePosition=-1;
   static int Elemlaenge;


   public static void main(String args[]) {
       
       setLaenge(180);
       setI(50);
       setE(210000);
       Modell.creatLast("Kraft",AnzahlLasten+1,10,1000,"Newton");
       Modell.creatLast("Kraft",AnzahlLasten+1,100,10000,"Newton");
       Modell.creatLast("Kraft", AnzahlLasten+1, 70, 6000, "Newton");
       Modell.creatLast("Kraft", AnzahlLasten+1, 40, 6000, "Newton");
       Modell.creatLast("Kraft", AnzahlLasten+1, 130, 6000, "Newton");
       Modell.creatLast("Kraft", AnzahlLasten+1, 0, 6000, "Newton");
       
       
       //Einteilen des Modells in Elemente
               if(AnzahlLasten==0 & AnzahlLager==0){
                   System.out.print("Erzeugen von Elementen nicht möglich, da keine Lager und Lasten definiert wurden");
                   return;
               }
               
               //Finden der Last mit der groesten Position
                       int merke=-1;
                       System.out.println(AnzahlLasten);
                       System.out.println(Kraft[4].Position);
                       for(int i=0;i<=AnzahlLasten-1;i++){
                           //Fehler beim letzten Schleifendurchgang, da Kraft[i+1=5] nicht existiert
                           //Lösung: Auswertung der beiden Bedingungen in zwei getrennten, ineinander geschachtelten Schleifen
                           //zuerst i==0 auswerten, dann die andere
                           if(i==0){
                               if(Kraft[i].Position>Kraft[i+1].Position){
                                   merke=i;
                                   continue;
                               }else if(Kraft[i].Position<Kraft[i+1].Position){
                                   merke=i+1;
                                   continue;
                               }
                           }else if(i>0 & Kraft[i].Position>Kraft[merke].Position){
                               merke=i;
                               continue;
                           }else if(i>0 & Kraft[i].Position<Kraft[merke].Position){
                               continue;
                           }
                       }
                       //Anzahl Elemente ermitteln
                       if(Kraft[merke].Position==Modelllaenge){
                           Elementanzahl=AnzahlLasten;
                       }else if(Kraft[merke].Position<Modelllaenge){
                           Elementanzahl=AnzahlLasten+1;
                       }

               //Erzeugen der Elemente
               Element Elem [] = new Element[Elementanzahl];
               for(int i=0;i<Elementanzahl-1;i++){

                   if(i==0){
                       merkePosition=findPosition(0);
                       Elem[i]=new Element(i, merkePosition, Modellflaechenmoment,ModellEModul);   
                   }else{
                       Elemlaenge=findPosition(merkePosition)-merkePosition;
                       Elem[i]=new Element(i, merkePosition, Modellflaechenmoment,ModellEModul);   
                       merkePosition=findPosition(merkePosition);
                   }
               }
   }
   
//#########################################################
   
   //Operationen
   public static void creatLast (String Lasttyp,int Nummer,int Position,int Betrag, String Einheit){
       //Erzeugen einer Last mit einem bestimmten Typ, nummer, Position, Betrag und Einheit
       if(Nummer>maxAnzahlLast){
           System.out.println("Maximale Anzahl an Lasten ueberschritten!");
           return;
       }
       
       if(Position==0){
           System.out.println("Ungueltige Position! Position>0 erwartet!");
           return;
       }
       
       
       Kraft[Nummer-1]=new Last(Lasttyp, Nummer, Position, Betrag, Einheit);
       //System.out.print(AnzahlLasten);
       AnzahlLasten++;
   }
   
   public static void setI(int Flaechenmoment){
       //Setzen des Flaecheninhalts als konstant
       Modellflaechenmoment=Flaechenmoment;
   }
   
   public static void setLaenge(int Laenge){
       //Setzen der Laenge als konstant
       Modelllaenge=Laenge;
   }
   
   public static void setE(int EModul){
       //Setzen des EModuls als konstant
       ModellEModul=EModul;
   }
   
   
   static int findPosition(int start){
       int merke=-1;
       for(int i=0;i<=AnzahlLasten-1;i++){
           if(Kraft[i].Position<start){
               continue;
           }
           //analoges Problem
           if(i==0){
               if(merke!=-1 & Kraft[i].Position<Kraft[i+1].Position){
                   merke=Kraft[i].Position;
               }else if(merke!=-1 & Kraft[i].Position>Kraft[i+1].Position){
                   merke=Kraft[i+1].Position;
               }else if(merke==-1 & Kraft[i].Position<Kraft[i+1].Position){
                   merke=Kraft[i].Position;
               }else if(merke==-1 & Kraft[i].Position>Kraft[i+1].Position){
                   merke=Kraft[i+1].Position;
               }
           }else if(i>0 & merke!=-1 & Kraft[i].Position<merke){
               merke=Kraft[i].Position;
           }else if(i>0 & merke!=-1 & Kraft[i].Position>merke){
               continue;
           }
       }
           
       return merke;
   }   
   
   public static Element[] getElements(){
       return Elem;
   }
}
In der Klasse Modell wird dann das Array vom Typ Element gefüllt.
Java:
public class Berechnung {
   public static Element Elem[]=new Element[Modell.Elementanzahl];
   
   public static void main(String args[]) {
       Modell Balkenmodell= new Modell();
       Balkenmodell.main(null);
       Elem=Balkenmodell.getElements();
           int Le=Modell.Elem[i].Elementlaenge;
       }    
 }
Nun möchte ich in der Klasse Berechnung auf eine Komponente des Array zugreifen, um z.B. die Elementlänge zu bekommen. Dazu habe ich für die Klasse Modell eine Getter-Methode geschrieben, die dieses Array zurückgeben soll.

Hat jemand eine Idee???
 

Tobser

Mitglied
Das Problem liegt darin, dass ich in der Klasse Berechnung auf eine Komponente,hier z.B. die erste, des Array zugreifen möchte, um zum Beispiel die Elementlänge zu bekommen.
Java:
int Le=Balkenmodell.Elem[0].Elementlaenge;
Wenn ich diese Zeile ausführe, kommt immer die Meldung Source not found.
 

Tobser

Mitglied
Ich hab jetzt rausbekommen, dass bereits innerhalb der Getter-Methode der Klasse Modell das Array Elem[] nicht bekannt ist. Wie bekomme ich nun dieses als Klassenvariable definierte Array in die Getter-Methode?
 

iBrain

Mitglied
Als erstes einmal möchte ich bemerken das der code sehr schwer zu lesen ist.Du solltest dir den "lowerCamelCase" angewöhnen damit man deinen code sauberer lesen kann.Zumindest wenn du ihn irgendwo postest.
Ungefähr so:
static int anzahlLasten =0;
static int anzahlLager =0;
static int maxAnzahlLast=10;
static int maxAnzahlLager=10;
static int modellLaenge;
static int modellFlaechenmoment;
static int modellEModul;
Da klassen in der regel gross geschrieben werden ist dies ein weit verbreitetes idiom um schnell erkennen zu können was ist variable und was nicht.methoden und variablen = lowerCamelCase ; Klassen Gross geschrieben.

Zu deiner letzten frage:
Java:
int Le=Balkenmodell.Elem[0].Elementlaenge;
kann schlicht und einfach nicht funktionieren. Du rufst die methode auf einem nicht initialisierten objekt auf.
Die zeile aus deiner main methode
Java:
Element Elem []= new Element[Elementanzahl];
verhindert die initialisierung der variable Elem welche du oben in deiner klasse angegeben hast
da du diese komplett neue definiert hast.Sprich du hast ein vollständig eigenständiges objekt initialisiert welches nichts mit der variable zu tun hat die du oben in deiner klasse stehen hast.

Der vollständigkeit halber : du hättest anstatt dem erwähnten code in der mainmethode schreiben müssen
Java:
Elem= new Element[Elementanzahl];

Ich würde dir allerdings ehrlich gesagt davon ab raten deine objekte und ihre attribute über die statische main Methode zu initialisieren.Dafür ist diese nämlich eigentlich nicht gedacht.Für die initialisierung von objekt variablen sind eigentlich konstruktoren zuständig oder andere objekt methoden die nach dem aufbau des gegebenen objekts gezielt auf dem jeweiligen objekt aufgerufen werden.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
B Variablen keine Arrayübergabe für getter im Interface Java Basics - Anfänger-Themen 8
L Setter und Getter für Arrays? Java Basics - Anfänger-Themen 4
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
W Getter/Setter Java Basics - Anfänger-Themen 4
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
KogoroMori21 Getter und Setter Java Basics - Anfänger-Themen 5
O Instanzattribut per Getter Methode zuweisbar, warum? Java Basics - Anfänger-Themen 8
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
V getter/setter Garage Java Basics - Anfänger-Themen 12
M Getter einer PriorityQueue Java Basics - Anfänger-Themen 1
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
V Getter Methode Java Basics - Anfänger-Themen 38
S getter, setter in abstrakter Klasse oder lieber Unterklassen Java Basics - Anfänger-Themen 4
topi Kapselung getter und setter Java Basics - Anfänger-Themen 5
S Getter/Setter - Variablenklasse ? Java Basics - Anfänger-Themen 5
S getter and setter Java Basics - Anfänger-Themen 12
L Getter und Setter Java Basics - Anfänger-Themen 2
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
A getter Java Basics - Anfänger-Themen 3
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
D Erste Schritte Java - Setter und Getter Java Basics - Anfänger-Themen 1
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
P getter Java Basics - Anfänger-Themen 1
K Klassen Setter/Getter Java Basics - Anfänger-Themen 3
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
M Getter Problematik mit ItemListener Java Basics - Anfänger-Themen 17
K Kapselung getter & setter Java Basics - Anfänger-Themen 11
S Array und Getter-Methode Java Basics - Anfänger-Themen 2
Avarion Getter von Super-Klasse funktioniert nicht Java Basics - Anfänger-Themen 10
J Frage zu Setter u. Getter Java Basics - Anfänger-Themen 7
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
J Variable per Getter holen - wie ? Java Basics - Anfänger-Themen 2
K getter & setter Java Basics - Anfänger-Themen 6
C getter/setter Problem anscheinend Java Basics - Anfänger-Themen 13
D Getter Mehtode Unsicher Java Basics - Anfänger-Themen 6
G Erste Schritte Getter und Setter Java Basics - Anfänger-Themen 12
B Getter,Setter - Konstruktor überflüssig? Java Basics - Anfänger-Themen 26
N Sprite Methode (Getter, Setter, Konstruktor) Java Basics - Anfänger-Themen 9
S getter/setter aufrufen Java Basics - Anfänger-Themen 9
B Java getter/setter funktioniert nicht! Java Basics - Anfänger-Themen 7
X OOP Getter/Setter überschreiben den Wert ihrer Variablen nicht Java Basics - Anfänger-Themen 4
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
M Problem mit getter, liefert nur alte Werte Java Basics - Anfänger-Themen 6
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
F Getter und Setter Java Basics - Anfänger-Themen 4
lulas[]args getter/setter umstellung Java Basics - Anfänger-Themen 6
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
G Generics kein Zugriff auf getter eines Objekts Java Basics - Anfänger-Themen 4
B Klassen Getter-Setter vor neuem Klassenaufruf - wie? Java Basics - Anfänger-Themen 20
M OOP Aufruf vieler Getter Methoden abkürzen? Java Basics - Anfänger-Themen 7
N OOP Getter, Setter und andere Probleme Java Basics - Anfänger-Themen 8
A OOP Getter und Setter Java Basics - Anfänger-Themen 18
MU5T4NG Getter und Setten bei GUI-Erstellung Java Basics - Anfänger-Themen 13
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
N boolean bei Setter und getter methoden Java Basics - Anfänger-Themen 21
J int Wert mit getter holen und in String parsen Java Basics - Anfänger-Themen 5
O Universeller GETTER Java Basics - Anfänger-Themen 5
J Die Getter Methode Java Basics - Anfänger-Themen 6
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
P OOP Getter&Setter Methoden funktionieren nicht Java Basics - Anfänger-Themen 7
E [Erledigt] Schöner Code zur Reduktion von unzähligen Getter-Methoden Java Basics - Anfänger-Themen 2
H Setter-und-Getter-Konvention Java Basics - Anfänger-Themen 8
V Reflection API - getter und setter Java Basics - Anfänger-Themen 7
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
C Getter/Setter Java Basics - Anfänger-Themen 61
F 2 dimensionales Array getter Methode Java Basics - Anfänger-Themen 3
H Frage zu getter und setter Java Basics - Anfänger-Themen 5
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
K Getter Java Basics - Anfänger-Themen 6
M getter/setter bei JTextField ? Java Basics - Anfänger-Themen 21
G warum Setter/Getter Java Basics - Anfänger-Themen 25
S In einer Liste auf getter und setter zugreifen Java Basics - Anfänger-Themen 6
S JTextField in anderer Classe mit getter Methode auslesen. Java Basics - Anfänger-Themen 2
M if oder verschiedene getter Java Basics - Anfänger-Themen 31
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 3
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben