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?
Das Array ist vom Typ Element.
In der Klasse Modell wird dann das Array vom Typ Element gefüllt.
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???
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;
}
}
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;
}
}
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;
}
}
Hat jemand eine Idee???