Kein Zugriff auf Klassenmethoden in Main Methode

C.B.

Aktives Mitglied
Hallo,

ich habe drei Klassen erstellt. Kunde, Rechnungen und Rechnungsammlung. Leider kann ich in der Main Methode nicht auf die Methoden bestimmeGesamtBetragAllerRechnungen und findeTeuersteRechnung der Klasse Rechnungssammlung zugreifen.

Anbei mein Code der Klasse Kunde:

Java:
package RechnungKunde;

public class Kunde {

//Attribute

String name;

String adresse;

String rechnungsempfänger = name + adresse;


//Konstruktor

public Kunde(String name,String adresse) {

this.name = name;

this.adresse = adresse;

}

//Getter & Setter

public String getName() {

return name;

}
public void setName(String name) {

this.name = name;

}

public String getAdresse() {

return adresse;

}

public void setAdresse(String adresse) {

this.adresse = adresse;

}

public String getRechnungsempfänger() {

return rechnungsempfänger;

}


Code der Klasse Rechnung:

Java:
package RechnungKunde;
public class Rechnung {

//Attribute
Kunde rechnungsempfänger;
int betrag;
float rabatt = 0;
final float MwSt = .019f;
static int [I]rechnungsnummer[/I];
int meineRechnungsnummer;



//Konstruktor
public Rechnung() {
    this(0,0);
}

public Rechnung(float rabatt, int betrag) {
    this.rabatt = rabatt;
    this.betrag = betrag;
    this.meineRechnungsnummer = [I]rechnungsnummer[/I]++;
    }

public Rechnung(int betrag) {
    this.betrag = betrag;
    this.rabatt= 0;
    this.meineRechnungsnummer = [I]rechnungsnummer[/I]++;
}

//Getter & Setter
public int getBetrag() {
    return betrag;
}
public void setBetrag(int betrag) {
    this.betrag = betrag;
}
public float getRabatt() {
    return rabatt;
}
public void setRabatt(float rabatt) {
    this.rabatt = rabatt;
}
public static int getRechnungsnummer() {
    return [I]rechnungsnummer[/I];
}
public static void setRechnungsnummer(int rechnungsnummer) {
    Rechnung.[I]rechnungsnummer[/I] = rechnungsnummer;
}
public int getMeineRechnungsnummer() {
    return meineRechnungsnummer;
}
public void setMeineRechnungsnummer(int meineRechnungsnummer) {
    this.meineRechnungsnummer = meineRechnungsnummer;
}
public float getMwSt() {
    return MwSt;
}
public Kunde getRechnungsempfänger() {
    return rechnungsempfänger;
}
public void setRechnungsempfänger(Kunde rechnungsempfänger) {
    this.rechnungsempfänger = rechnungsempfänger;

}
}

Code Klasse Rechnungssammlung:

Java:
package RechnungKunde;

public class Rechnungssammlung {
public Rechnung [] rechnungen;
public Rechnungssammlung(Rechnung [] rechnungen) {
    this.rechnungen = rechnungen;
}
//Methoden
int bestimmeGesamtbetragAllerRechnungenVon (Kunde k){
    //wenn kein Kunde oder keine Rechnung vorhanden
    if(k==null || rechnungen == null) {
    return 0;
    }
    int betrag = 0;
    //alle Rechnungen betrachten
    for (Rechnung r: rechnungen) {
     // wenn gesuchter Kunde
    if(r.getRechnungsempfänger()==k) {
    //Betrag dazu addieren
    betrag = betrag + r.getBetrag();
    }
    }
    return betrag;
}

Rechnung findeTeuerersteRechnung() {
    if(rechnungen == null) {
    return null;
    }
    Rechnung max = null;
    //alle Rechnungen betrachten
    for (Rechnung r: rechnungen) {
    //wenn nich kein Maximum gefunden
    //oder aktuelle Rechnung teurer
    if(max == null || max.getBetrag()<r.getBetrag()) {
    //Maximum anpassen
    max = r;   
    }
    }
    return max;
}
}


Code meiner Main Methode:

Java:
package RechnungKunde;

public class Main {

    public static void main(String[] args) {

    // [B]TODO[/B] Auto-generated method stub

Rechnung rechnung1 = new Rechnung();
Rechnung rechnung2 = new Rechnung(2);
Rechnung rechnung3 = new Rechnung (1,0);
rechnung1.betrag = 12;

System.[B][I]out[/I][/B].println(rechnung1.getMeineRechnungsnummer());
System.[B][I]out[/I][/B].println(rechnung2.getMeineRechnungsnummer());
System.[B][I]out[/I][/B].println(rechnung3.getMeineRechnungsnummer());
System.[B][I]out[/I][/B].println(rechnung3.[I]getRechnungsnummer[/I]());
System.[B][I]out[/I][/B].println(Rechnung.[I]getRechnungsnummer[/I]());

Kunde Kunde1 = new Kunde ("Herbert Tisch", "Am Römling 3, 12445 Nowhere");
Kunde Kunde2 = new Kunde ("Markus Bauer", "Hinter der Grieb, q64748 Anywhere");
Kunde Kunde3 = new Kunde ("Johannes Kran", "Am Römling 66, 345454 Baum");
Kunde Kunde4 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
rechnung1.setRechnungsempfänger(Kunde4);
rechnung3.setRechnungsempfänger(Kunde3);
rechnung2.setRechnungsempfänger(Kunde3);
Rechnung[] rechnungen = new Rechnung[10];
rechnungen [1]= rechnung1;
rechnungen [2]= rechnung2;
rechnungen [3]= rechnung3;
    }
}


Hier möchte ich nun auf die Methode findeTeueresteRechnung und bestimmeGesamtBetragallerRechnungen zugreifen aber es funktioniert nicht. Könnt ihr mir sagen was ich falsch mache?

Vielen Dank.
 
Zuletzt bearbeitet von einem Moderator:

temi

Top Contributor
Bitte die Code-Tags (das </> Symbol im Editor) verwenden, so kann man das schlecht lesen.

Was bedeutet "funktioniert nicht"?

Die Methode findeTeuersteRechnung() ist doch in der Klasse Rechnungssammlung. Dann brauchst du auch eine Instanz dieser Klasse, denn sie hat ja keine Klassenmethoden, sondern nur Instanzmethoden.
 

C.B.

Aktives Mitglied
Vielen Dank für eure Antworten. Hab den Code nochmal eingefügt um ihn besser lesen zu können und hab ein Objekt Rechnungssammlung erstellt mit dem Namen "teuersteRechnung".
Ich würde nun gerne dem Array "teuersteRechnung" vom Typ Rechnungssammlung die zuvor erstellen Rechnungen rechnungen1, rechnungen2, rechnungen3 vom Typ Rechnung zuweisen. Ist das möglich?

Vielen Dank.

[CODE lang="java" title="Kunde"]package RechnungKunde;

public class Kunde {
//Attribute
String name;
String adresse;
String rechnungsempfänger = name + adresse;

//Konstruktor
public Kunde(String name,String adresse) {
this.name = name;
this.adresse = adresse;
}

//Getter & Setter
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAdresse() {
return adresse;
}

public void setAdresse(String adresse) {
this.adresse = adresse;
}

public String getRechnungsempfänger() {
return rechnungsempfänger;
}

}
[/CODE]

[CODE lang="java" title="Rechnung"]package RechnungKunde;

public class Rechnung {

//Attribute
Kunde rechnungsempfänger;
int betrag;
float rabatt = 0;
final float MwSt = .019f;
static int rechnungsnummer;
int meineRechnungsnummer;

//Konstruktor

public Rechnung() {
this(0,0);
}

public Rechnung(float rabatt, int betrag) {
this.rabatt = rabatt;
this.betrag = betrag;
this.meineRechnungsnummer = rechnungsnummer++;
}

public Rechnung(int betrag) {
this.betrag = betrag;
this.rabatt= 0;
this.meineRechnungsnummer = rechnungsnummer++;
}

//Getter & Setter
public int getBetrag() {
return betrag;
}

public void setBetrag(int betrag) {
this.betrag = betrag;
}

public float getRabatt() {
return rabatt;
}

public void setRabatt(float rabatt) {
this.rabatt = rabatt;
}

public static int getRechnungsnummer() {
return rechnungsnummer;
}

public static void setRechnungsnummer(int rechnungsnummer) {
Rechnung.rechnungsnummer = rechnungsnummer;
}

public int getMeineRechnungsnummer() {
return meineRechnungsnummer;
}

public void setMeineRechnungsnummer(int meineRechnungsnummer) {
this.meineRechnungsnummer = meineRechnungsnummer;
}

public float getMwSt() {
return MwSt;
}

public Kunde getRechnungsempfänger() {
return rechnungsempfänger;
}

public void setRechnungsempfänger(Kunde rechnungsempfänger) {
this.rechnungsempfänger = rechnungsempfänger;
}
}

[/CODE]

[CODE lang="java" title="Rechnungssammlung"]package RechnungKunde;

public class Rechnungssammlung {
public Rechnung [] rechnungen;

public Rechnungssammlung(Rechnung [] rechnungen) {
this.rechnungen = rechnungen;
}

//Methoden
int bestimmeGesamtbetragAllerRechnungenVon (Kunde k){
//wenn kein Kunde oder keine Rechnung vorhanden
if(k==null || rechnungen == null) {
return 0;
}
int betrag = 0;
//alle Rechnungen betrachten
for (Rechnung r: rechnungen) {
// wenn gesuchter Kunde
if(r.getRechnungsempfänger()==k) {
//Betrag dazu addieren
betrag = betrag + r.getBetrag();
}
}
return betrag;
}

Rechnung findeTeuerersteRechnung() {
if(rechnungen == null) {
return null;
}

Rechnung max = null;
//alle Rechnungen betrachten

for (Rechnung r: rechnungen) {
//wenn nich kein Maximum gefunden
//oder aktuelle Rechnung teurer
if(max == null || max.getBetrag()<r.getBetrag()) {
//Maximum anpassen
max = r;
}
}
return max;
}
}
[/CODE]


[CODE lang="java" title="Main Methode"]package RechnungKunde;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Rechnung rechnung1 = new Rechnung();
Rechnung rechnung2 = new Rechnung(2);
Rechnung rechnung3 = new Rechnung (1,0);

rechnung1.betrag = 12;



System.out.println(rechnung1.getMeineRechnungsnummer());
System.out.println(rechnung2.getMeineRechnungsnummer());
System.out.println(rechnung3.getMeineRechnungsnummer());
System.out.println(rechnung3.getRechnungsnummer());
System.out.println(Rechnung.getRechnungsnummer());

Kunde Kunde1 = new Kunde ("Herbert Tisch", "Am Römling 3, 12445 Nowhere");
Kunde Kunde2 = new Kunde ("Markus Bauer", "Hinter der Grieb, q64748 Anywhere");
Kunde Kunde3 = new Kunde ("Johannes Kran", "Am Römling 66, 345454 Baum");
Kunde Kunde4 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");

rechnung1.setRechnungsempfänger(Kunde4);
rechnung3.setRechnungsempfänger(Kunde3);
rechnung2.setRechnungsempfänger(Kunde3);

Rechnungssammlung[] teuersteRechnungen = new Rechnungssammlung [3];

}

}
[/CODE]
 

temi

Top Contributor
Ich würde nun gerne dem Array "teuersteRechnung" vom Typ Rechnungssammlung die zuvor erstellen Rechnungen rechnungen1, rechnungen2, rechnungen3 vom Typ Rechnung zuweisen. Ist das möglich?
Wäre es nicht sinnvoller die Rechnungen der Rechnungssammlung zuzuweisen? Die ist ja dafür gedacht und enthält auch ein passendes Array für Rechnungen. Bei der Erzeugung einer Instanz von Rechungssammlung kannst du die Rechnungen als Array dem Konstruktor übergeben.
 

Jw456

Top Contributor
Rechnungssammlung[] teuersteRechnungen = new Rechnungssammlung [3];

Damit rufst du für mich nicht den Konstruktor auf. erstellst kein Objekt von der Kasse.
Wieso brauchst du ein Array von der Klasse?
Das Array oder liste musst du ja dem Konstruktor mitgeben. Beim erstelln der Instaz
Das erstellen des Array“rechnungen“ in deinen ersten post war schon richtig.
Nur musst du das auch beim Objekterstellen mitgeben damit es der Konstruktor der Klasse auch speichern kann . Zur weiter Verarbeitung.

Java:
Rechnung[] rechnungen = new Rechnung[10];
rechnungen [1]= rechnung1;
rechnungen [2]= rechnung2;
rechnungen [3]= rechnung3;
Rechnungssammlung teuersteRechnungen = new Rechnungssammlung(rechnungen);

PS temi war schneller
 

C.B.

Aktives Mitglied
Wäre es nicht sinnvoller die Rechnungen der Rechnungssammlung zuzuweisen? Die ist ja dafür gedacht und enthält auch ein passendes Array für Rechnungen. Bei der Erzeugung einer Instanz von Rechungssammlung kannst du die Rechnungen als Array dem Konstruktor übergeben.
Genau das würde ich gerne machen, hab mich falsch ausgedrückt. Bin wirklich absoluter Anfänger. Wie wäre dein Vorgehen? Ich weiß grad nicht wie ich es umsetzen soll. Vielen Dank.
 

temi

Top Contributor
Wie wäre dein Vorgehen?
So, wie es @Jw456 gezeigt hat. Erstelle ein Array zum Speichern der einzelnen Rechnungen und übergib das als Parameter an den Konstruktor von Rechnungssammlung.

Den Namen solltest du evtl. noch anpassen. Es sind ja nicht die teuersten Rechnungen, sondern alle Rechnungen. Ein Variablenname sollte sinnvoll sein und aussagen, welche Funktion (oder Inhalt) die Variable hat.
 

C.B.

Aktives Mitglied
Eine Frage habe ich trotzdem noch, es funktioniert nun soweit alles. Nur bei dem Aufruf der Methode "findeTeuersteRechnung" erhalte ich keine Rechnung aus dem Array sondern die Ausgabe: "RechnungKunde.Rechnung@299a06ac".

Was muss ich ändern, damit mir eclipse eine Rechnung aus dem Array ausgibt?

[CODE lang="java" title="Main"]package RechnungKunde;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Rechnung rechnung0 = new Rechnung(10);
Rechnung rechnung1 = new Rechnung(2);
Rechnung rechnung2 = new Rechnung (9);
Rechnung rechnung3 = new Rechnung (13);
Rechnung rechnung4 = new Rechnung (14);
Rechnung rechnung5 = new Rechnung (16);
Rechnung rechnung6 = new Rechnung (20);
Rechnung rechnung7 = new Rechnung (21);
Rechnung rechnung8 = new Rechnung (50);
Rechnung rechnung9 = new Rechnung (4);


Kunde Kunde1 = new Kunde ("Herbert Tisch", "Am Römling 3, 12445 Nowhere");
Kunde Kunde2 = new Kunde ("Markus Bauer", "Hinter der Grieb, q64748 Anywhere");
Kunde Kunde3 = new Kunde ("Johannes Kran", "Am Römling 66, 345454 Baum");
Kunde Kunde4 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");


rechnung0.setRechnungsempfänger(Kunde4);
rechnung1.setRechnungsempfänger(Kunde3);
rechnung2.setRechnungsempfänger(Kunde3);
rechnung3.setRechnungsempfänger(Kunde3);
rechnung4.setRechnungsempfänger(Kunde2);
rechnung5.setRechnungsempfänger(Kunde3);
rechnung6.setRechnungsempfänger(Kunde1);
rechnung7.setRechnungsempfänger(Kunde3);
rechnung8.setRechnungsempfänger(Kunde1);
rechnung9.setRechnungsempfänger(Kunde1);


Rechnung[] rechnungen = new Rechnung[10];
rechnungen [0]= rechnung0;
rechnungen [1]= rechnung1;
rechnungen [2]= rechnung2;
rechnungen [3]= rechnung3;
rechnungen [4]= rechnung4;
rechnungen [5]= rechnung5;
rechnungen [6]= rechnung6;
rechnungen [7]= rechnung7;
rechnungen [8]= rechnung8;
rechnungen [9]= rechnung9;


Rechnungssammlung teuersteRechnungen = new Rechnungssammlung(rechnungen);

System.out.println(teuersteRechnungen.findeTeuerersteRechnung());
//System.out.println(teuersteRechnungen.bestimmeGesamtbetragAllerRechnungenVon (Kunde1));


//System.out.println(rechnung1.getMeineRechnungsnummer());
//System.out.println(rechnung2.getMeineRechnungsnummer());
//System.out.println(rechnung3.getMeineRechnungsnummer());
//System.out.println(rechnung3.getRechnungsnummer());
//System.out.println(Rechnung.getRechnungsnummer());


}

}
[/CODE]

[CODE lang="java" title="Rechnungssammlung"]package RechnungKunde;

public class Rechnungssammlung {
public Rechnung [] rechnungen;

public Rechnungssammlung(Rechnung [] rechnungen) {
this.rechnungen = rechnungen;
}

//Methoden
int bestimmeGesamtbetragAllerRechnungenVon (Kunde k){
//wenn kein Kunde oder keine Rechnung vorhanden
if(k==null || rechnungen == null) {
return 0;
}
int betrag = 0;
//alle Rechnungen betrachten
for (Rechnung r: rechnungen) {
// wenn gesuchter Kunde
if(r.getRechnungsempfänger()==k) {
//Betrag dazu addieren
betrag = betrag + r.getBetrag();
}
}
return betrag;
}

Rechnung findeTeuerersteRechnung() {
if(rechnungen == null) {
return null;
}

Rechnung max = null;
//alle Rechnungen betrachten

for (Rechnung r: rechnungen) {
//wenn nich kein Maximum gefunden
//oder aktuelle Rechnung teurer
if(max == null || max.getBetrag()<r.getBetrag()) {
//Maximum anpassen
max = r;
}
}
return max;
}
}
[/CODE]
[CODE lang="java" title="Rechnung"]package RechnungKunde;

public class Rechnung {

//Attribute
Kunde rechnungsempfänger;
int betrag;
float rabatt = 0;
final float MwSt = .019f;
static int rechnungsnummer;
int meineRechnungsnummer;

//Konstruktor

public Rechnung(int betrag, float rabatt) {
this.betrag = betrag;
this.rabatt = rabatt;
this.meineRechnungsnummer = rechnungsnummer++;
}

public Rechnung(int betrag) {
this.betrag = betrag;
this.rabatt= 0;
this.meineRechnungsnummer = rechnungsnummer++;
}

//Getter & Setter
public int getBetrag() {
return betrag;
}

public void setBetrag(int betrag) {
this.betrag = betrag;
}

public float getRabatt() {
return rabatt;
}

public void setRabatt(float rabatt) {
this.rabatt = rabatt;
}

public static int getRechnungsnummer() {
return rechnungsnummer;
}

public static void setRechnungsnummer(int rechnungsnummer) {
Rechnung.rechnungsnummer = rechnungsnummer;
}

public int getMeineRechnungsnummer() {
return meineRechnungsnummer;
}

public void setMeineRechnungsnummer(int meineRechnungsnummer) {
this.meineRechnungsnummer = meineRechnungsnummer;
}

public float getMwSt() {
return MwSt;
}

public Kunde getRechnungsempfänger() {
return rechnungsempfänger;
}

public void setRechnungsempfänger(Kunde rechnungsempfänger) {
this.rechnungsempfänger = rechnungsempfänger;
}
}

[/CODE]
[CODE lang="java" title="Kunde"]package RechnungKunde;

public class Kunde {
//Attribute
String name;
String adresse;
String rechnungsempfänger = name + adresse;

//Konstruktor
public Kunde(String name,String adresse) {
this.name = name;
this.adresse = adresse;
}

//Getter & Setter
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAdresse() {
return adresse;
}

public void setAdresse(String adresse) {
this.adresse = adresse;
}

public String getRechnungsempfänger() {
return rechnungsempfänger;
}




}
[/CODE]
 

temi

Top Contributor
Entweder du überschreibst die Methode toString() der Klasse Rechnung oder du greifst separat auf die Bestandteile von Rechnung zu, die du ausgeben möchtest, z. B. println("Rechnung " + rechnung.getRechnungsnummer() + ", Betrag: " + rechnung.getBetrag());

Die Ausgabe die du erhältst, kommt daher, dass du bei der Ausgabe als Parameter von println() die Instanz der Klasse Rechnung angegeben hast. Intern wird von println() die von Object geerbte Methode toString() aufgerufen. Die Standardimplementierung von Object gibt aber nur den Klassennamen und, ich glaube, einen Hashwert aus.

Kleiner Hinweis:
Java:
// anstatt

Rechnung rechnung0 = new Rechnung(10);
// ..
Kunde Kunde4 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");

rechnung0.setRechnungsempfänger(Kunde4);
// --
Rechnung[] rechnungen = new Rechnung[10];
rechnungen [0]= rechnung0;


// geht auch

Rechnung[] rechnungen = new Rechnung[10];
rechnungen [0]= new Rechnung(10);
// ..
Kunde kunde4 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
rechnungen[0].setRechnungsempfänger(kunde4);

Und noch ein Hinweis: In Java beginnen Klassennamen mit einem Großbuchstaben und Variablen-/Methodennamen mit einem Kleinbuchstaben. In deinem Fall sollten Kunde1 - Kunde4 besser kunde1 - kunde4 benannt werden.
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Wenn du das mit println ausgeben willst. Solltest du auch eine toString Methode neben den getter und setter in deine Klasse erstellen.

Misst wider zu langsam und sehr ausführlich
 

temi

Top Contributor
Wenn du das mit println ausgeben willst. Solltest du auch eine toString Methode neben den getter und setter in deine Klasse erstellen.
Wobei die Empfehlung ist, die toString() Methode so zu überschreiben, dass sie z. B. für Debuggingzwecke eine menschenlesbare Repräsentation der Klasse/Instanz zurückgibt. Die Ausgabe der Rechnungsdaten in Listen usw. erfolgt eher über die entsprechenden getter, denn unterschiedliche Ausgabezwecke erfordern i. d. R. auch unterschiedliche Informationen und Formate der Ausgabe und das kann toString() nicht leisten. Es gibt natürlich Ausnahmen, wo es u. U. reicht toString() zu überschreiben.
 

Jw456

Top Contributor
Das ist klar setze ich voraus das es eine override sein muß.
Er wollte ja erstmal die Rechnungs Nummer und die kann toString auch liefern.
 

Jw456

Top Contributor
Ich habe deinen Text erst so gelesen das du sagen wolltest er muss es überschreiben muss und nicht nur implementieren.

Er wollte ja erstmal die Rechnungs Nummer und die kann toString auch liefern. Eben als String und nicht als int was sie ja ist.

Danach kannte er es seiner main weiter verarbeiten.

Ansonsten wäre es wohl besser das die Methode gleich die Nummer zurück gibt und nicht das Objekt von der Rechnung.
 
Zuletzt bearbeitet:

C.B.

Aktives Mitglied
Hallo,

hab in der Main Methode diese Methode implementiert:

System.out.println("Die höchste Rechnung hat die Nummer: " + höchsteRechnung.getMeineRechnungsnummer() + " und den Betrag: " + höchsteRechnung.getBetrag() + "und gehört dem Kunden: " + höchsteRechnung.getRechnungsempfänger());


Als Ergebnis erhalte ich:

"Die höchste Rechnung hat die Nummer: 8 und den Betrag: 50und gehört dem Kunden: RechnungKunde.Kunde@299a06ac"


d.h. höchsteRechnung.getRechnungsempfänger()); liefert "RechnungKunde.Kunde@299a06ac"

Was muss ich machen damit ich einen Namen erhalte und nicht diesen Ausdruck: RechnungKunde.Kunde@299a06ac"?

Wie würde es funktionieren wenn ich die toString Methode überschreibe?

Hier nochmal das komplette Programm:

[CODE lang="java" title="Kunde"]package RechnungKunde;

public class Kunde {
//Attribute
String name;
String adresse;
String rechnungsempfänger = name + adresse;

//Konstruktor
public Kunde(String name,String adresse) {
this.name = name;
this.adresse = adresse;
}

//Getter & Setter
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAdresse() {
return adresse;
}

public void setAdresse(String adresse) {
this.adresse = adresse;
}

public String getRechnungsempfänger() {
return rechnungsempfänger;
}

}
[/CODE]

[CODE lang="java" title="Rechnung"]package RechnungKunde;

public class Rechnung {

//Attribute
Kunde rechnungsempfänger;
int betrag;
float rabatt = 0;
final float MwSt = .019f;
static int rechnungsnummer;
int meineRechnungsnummer;
Rechnungssammlung höchsteRechnung;

//Konstruktor

public Rechnung(int betrag, float rabatt) {
this.betrag = betrag;
this.rabatt = rabatt;
this.meineRechnungsnummer = rechnungsnummer++;
}

public Rechnung(int betrag) {
this.betrag = betrag;
this.rabatt= 0;
this.meineRechnungsnummer = rechnungsnummer++;
}

//Getter & Setter
public int getBetrag() {
return betrag;
}

public void setBetrag(int betrag) {
this.betrag = betrag;
}

public float getRabatt() {
return rabatt;
}

public void setRabatt(float rabatt) {
this.rabatt = rabatt;
}

public static int getRechnungsnummer() {
return rechnungsnummer;
}

public static void setRechnungsnummer(int rechnungsnummer) {
Rechnung.rechnungsnummer = rechnungsnummer;
}

public int getMeineRechnungsnummer() {
return meineRechnungsnummer;
}

public void setMeineRechnungsnummer(int meineRechnungsnummer) {
this.meineRechnungsnummer = meineRechnungsnummer;
}

public float getMwSt() {
return MwSt;
}

public Kunde getRechnungsempfänger() {
return rechnungsempfänger;
}

public void setRechnungsempfänger(Kunde rechnungsempfänger) {
this.rechnungsempfänger = rechnungsempfänger;
}


}

[/CODE]

[CODE lang="java" title="Rechnungssammlung"]package RechnungKunde;

public class Rechnungssammlung {

//Attribute
public Rechnung [] rechnungen;


//Konstruktor
public Rechnungssammlung(Rechnung [] rechnungen) {
this.rechnungen = rechnungen;
}

//Methoden
int bestimmeGesamtbetragAllerRechnungenVon (Kunde k){
//wenn kein Kunde oder keine Rechnung vorhanden
if(k==null || rechnungen == null) {
return 0;
}
int betrag = 0;
//alle Rechnungen betrachten
for (Rechnung r: rechnungen) {
// wenn gesuchter Kunde
if(r.getRechnungsempfänger()==k) {
//Betrag dazu addieren
betrag = betrag + r.getBetrag();
}
}
return betrag;
}

Rechnung findeTeuerersteRechnung() {

if(rechnungen == null) {
return null;
}

Rechnung max = null;
//alle Rechnungen betrachten

for (Rechnung r: rechnungen) {
//wenn nich kein Maximum gefunden
//oder aktuelle Rechnung teurer
if(max == null || max.getBetrag()<r.getBetrag()) {
//Maximum anpassen
max = r;
}
}
return max;
}


}[/CODE]

[CODE lang="java" title="Main Methode"]package RechnungKunde;

public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub
Rechnung rechnung0 = new Rechnung(10);
Rechnung rechnung1 = new Rechnung(2);
Rechnung rechnung2 = new Rechnung (9);
Rechnung rechnung3 = new Rechnung (13);
Rechnung rechnung4 = new Rechnung (14);
Rechnung rechnung5 = new Rechnung (16);
Rechnung rechnung6 = new Rechnung (20);
Rechnung rechnung7 = new Rechnung (21);
Rechnung rechnung8 = new Rechnung (50);
Rechnung rechnung9 = new Rechnung (4);


Kunde kunde0 = new Kunde ("Herbert Tisch", "Am Römling 3, 12445 Nowhere");
Kunde kunde1 = new Kunde ("Markus Bauer", "Hinter der Grieb, q64748 Anywhere");
Kunde kunde2 = new Kunde ("Johannes Kran", "Am Römling 66, 345454 Baum");
Kunde kunde3 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
Kunde kunde4 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
Kunde kunde5 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
Kunde kunde6 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
Kunde kunde7 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
Kunde kunde8 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");
Kunde kunde9 = new Kunde ("Thomas Fuchs", "Am Ostentor 3, 97749 Stadt");


rechnung0.setRechnungsempfänger(kunde0);
rechnung1.setRechnungsempfänger(kunde1);
rechnung2.setRechnungsempfänger(kunde2);
rechnung3.setRechnungsempfänger(kunde3);
rechnung4.setRechnungsempfänger(kunde4);
rechnung5.setRechnungsempfänger(kunde5);
rechnung6.setRechnungsempfänger(kunde6);
rechnung7.setRechnungsempfänger(kunde7);
rechnung8.setRechnungsempfänger(kunde8);
rechnung9.setRechnungsempfänger(kunde9);


Rechnung[] rechnungen = new Rechnung[10];
rechnungen [0]= rechnung0;
rechnungen [1]= rechnung1;
rechnungen [2]= rechnung2;
rechnungen [3]= rechnung3;
rechnungen [4]= rechnung4;
rechnungen [5]= rechnung5;
rechnungen [6]= rechnung6;
rechnungen [7]= rechnung7;
rechnungen [8]= rechnung8;
rechnungen [9]= rechnung9;


Rechnungssammlung teuersteRechnungen = new Rechnungssammlung(rechnungen);

Rechnung höchsteRechnung = teuersteRechnungen.findeTeuerersteRechnung();
System.out.println(teuersteRechnungen.bestimmeGesamtbetragAllerRechnungenVon (kunde0));

//System.out.println(rechnung1.getMeineRechnungsnummer());
//System.out.println(rechnung2.getMeineRechnungsnummer());
//System.out.println(rechnung3.getMeineRechnungsnummer());
//System.out.println(rechnung3.getRechnungsnummer());
//System.out.println(Rechnung.getRechnungsnummer());

System.out.println("Die höchste Rechnung hat die Nummer: " + höchsteRechnung.getMeineRechnungsnummer() + " und den Betrag: " + höchsteRechnung.getBetrag() + "und gehört dem Kunden: " + höchsteRechnung.getRechnungsempfänger());
}
}[/CODE]
 
K

kneitzel

Gast
Wenn eine Instanz ausgegeben wird, dann wird die Methode toString() auf der Instanz aufgrufen.
toString() von Object gibt aus: <klassenname>@<hashcode> wobei bei den derzeit bekannten Implementationen der hashcode die Speicheradresse vom Objekt ist.

Die Lösung kann also sein:
a) toString() in Kunde überschreiben
b) Statt die Instanz gezielt ein oder mehrere Attribute ausgeben.
 

C.B.

Aktives Mitglied
Wenn eine Instanz ausgegeben wird, dann wird die Methode toString() auf der Instanz aufgrufen.
toString() von Object gibt aus: <klassenname>@<hashcode> wobei bei den derzeit bekannten Implementationen der hashcode die Speicheradresse vom Objekt ist.

Die Lösung kann also sein:
a) toString() in Kunde überschreiben
b) Statt die Instanz gezielt ein oder mehrere Attribute ausgeben.
Vielen Dank. Ich weiß nur leider nicht wie ich a und b umsetzen soll. Könnten Sie mir hier noch weiterhelfen?
 

temi

Top Contributor
Vielen Dank. Ich weiß nur leider nicht wie ich a und b umsetzen soll. Könnten Sie mir hier noch weiterhelfen?
Du musst immer auch beachten, was der Typ des Rückgabewerts einer Methode ist.

Die Methode rechnung.getBetrag() gibt bspw. einen int-Wert zurück, den du ausgeben kannst.

Die Methode rechnung.getRechnungsempfänger() hat als Rückgabetyp einen Kunden. Jetzt kannst du abhängig vom entsprechenden Typen schauen, ob es für diesen weitere Zugriffsmethode gibt, wie in deinem Fall getName().
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
N Kein Zugriff auf Ordner -> NullPointerException Java Basics - Anfänger-Themen 2
I kein zugriff auf jList oder Textfield Java Basics - Anfänger-Themen 2
D Classpath Kein Zugriff Java Basics - Anfänger-Themen 9
G Generics kein Zugriff auf getter eines Objekts Java Basics - Anfänger-Themen 4
H Erste Schritte Kein Zugriff auf einen button der ein Ereignis ausgelöst hat Java Basics - Anfänger-Themen 2
I Kein Zugriff auf erstelltes Objekt aus anderer Methode Java Basics - Anfänger-Themen 6
L Kein Zugriff auf Listen in einem Array Java Basics - Anfänger-Themen 2
A kein zugriff auf variable trotz public? Java Basics - Anfänger-Themen 3
S Kein Zugriff auf Files in Jar-Datei Java Basics - Anfänger-Themen 4
G kein Zugriff auf eine Klasse in einem Unterordner Java Basics - Anfänger-Themen 11
M Nach Serializierung kein Zugriff auf Variabeln moeglich Java Basics - Anfänger-Themen 7
B Kein Zugriff auf Festplatt (Windows XP) Java Basics - Anfänger-Themen 6
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
M intelliJ auf neuem PC, plötzlich kein Code Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
M Kein Shortcut? Java Basics - Anfänger-Themen 7
GermanPie Fehler in Putty (kein Hauptmanifestattribut, in jar) Java Basics - Anfänger-Themen 4
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
D kein hauptmanifestattribut in dateiname.jar Java Basics - Anfänger-Themen 14
X Methode bei mehrfachen Aufruf kein Effekt Java Basics - Anfänger-Themen 3
Z Warum kein Dreieck aus Sternen? Java Basics - Anfänger-Themen 9
T In C:\java\bin wird kein javac angezeigt. Java Basics - Anfänger-Themen 1
B Wieso gibt das Programm in der Console kein Ergebnis aus? Java Basics - Anfänger-Themen 2
N kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 1
I Shutdown wenn kein Strom verfügbar Java Basics - Anfänger-Themen 4
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
X Best Practice SUCHE ein gutes Javabuch! (kein Anfang von 0) Java Basics - Anfänger-Themen 5
N Input/Output Wenn kein Input, dann Fehler anzeigen lassen im JFrame Java Basics - Anfänger-Themen 6
J Umgebungsvariable Programmfenster zeigt kein Bild an Java Basics - Anfänger-Themen 1
T Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert! Java Basics - Anfänger-Themen 6
B Compiler-Fehler 86:11: error: ';' expected obwohl kein ";" hingehört! Java Basics - Anfänger-Themen 10
T Compiler-Fehler Methode ist Abstrakt obwohl kein Schlüsselwort gesetzt wurde Java Basics - Anfänger-Themen 5
V Kann kein Java Projekt mehr mit Eclipse erstellen Java Basics - Anfänger-Themen 5
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
J Warum kein new ? Java Basics - Anfänger-Themen 10
C Klassen Wieso kein infiniter Regress? Java Basics - Anfänger-Themen 4
X Fehler beim Öffnen von Jar Datei: "kein Hauptmanifestattribut" Java Basics - Anfänger-Themen 5
Xendarii Quicksort gibt kein Ergebnis aus Java Basics - Anfänger-Themen 13
K Warum ist ein Singleton kein Best Practise? Java Basics - Anfänger-Themen 3
J ResultSet.getStrin - doch kein String? oder wo liegt das Problem? Java Basics - Anfänger-Themen 3
Kenan89 JScrollPane, aber kein Scrollbalken Java Basics - Anfänger-Themen 4
M In Netbeans kein Problem, im Terminal schon Java Basics - Anfänger-Themen 3
E Kein Rechtzeitiger Abbruch bei Rekursiverfunktion Java Basics - Anfänger-Themen 8
C Stringeingabe: kein Satz wegen Leerzeichen möglich Java Basics - Anfänger-Themen 3
I Warum kein this in Methode Java Basics - Anfänger-Themen 17
V Kein neuer Thread trotz Runnable Java Basics - Anfänger-Themen 4
M Kann kein Objekt (AudioFile in diesem Beispiel) für ein leeren String erzeugen Java Basics - Anfänger-Themen 3
K SWT Fehler obwohl kein SWT benutzt wird Java Basics - Anfänger-Themen 4
L String: Objekt und doch kein Objekt? Java Basics - Anfänger-Themen 5
J Warum kein return wert? Java Basics - Anfänger-Themen 10
S kein sound? Java Basics - Anfänger-Themen 3
T JTextPane - setText kein kein neuladen der Bilder? Java Basics - Anfänger-Themen 8
L Kein System.out Java Basics - Anfänger-Themen 14
T Warum öffnet sich kein Fenster? Java Basics - Anfänger-Themen 3
c_sidi90 jTextarea kein Zeilenumbruch erlauben Java Basics - Anfänger-Themen 4
M Kein Sound in der .jar, davor schon Java Basics - Anfänger-Themen 6
alderwaran closed source jar, kein javadoc. was macht methode x eigentlich? ( oracle forms pjc beans ) Java Basics - Anfänger-Themen 2
K Arrays - Komma zu viel, kein Problem? Java Basics - Anfänger-Themen 3
G erweiterte for schleife kein new? Java Basics - Anfänger-Themen 4
C warum liefert equals kein TRUE Java Basics - Anfänger-Themen 12
T meinThread.wait(); wirft immer Exeption & hat kein Effekt Java Basics - Anfänger-Themen 15
Houly kein bild im JFrame bei Mp3 Wiedergabe Java Basics - Anfänger-Themen 5
T Jar-Archive kein System.out.println()?? Java Basics - Anfänger-Themen 5
W "Kein korrekter Schleifendurchlauf" Java Basics - Anfänger-Themen 3
S Kein Event bei Click auf JComboBox Java Basics - Anfänger-Themen 4
radiac Wieso bekomme ich kein Bild drauf??? Java Basics - Anfänger-Themen 13
W peinliches Problem - Kein Konstruktor? Java Basics - Anfänger-Themen 10
Spot84 kein interface iEditorInput Java Basics - Anfänger-Themen 2
Kasoki Compilen von Java Scripts (Nein kein JavaScript xD) Java Basics - Anfänger-Themen 13
G Logger mag kein Linux Java Basics - Anfänger-Themen 3
M erzugt kein objekt Java Basics - Anfänger-Themen 18
G GUI von wiederholender Methode füttern; kein Programmende Java Basics - Anfänger-Themen 2
K kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 2
P Eclipse startet kein Applet Java Basics - Anfänger-Themen 6
G Kein EJB-Package vorhanden Java Basics - Anfänger-Themen 2
F Seltsame Zeichen und kein Zeichenumbruch mit Filewriter Java Basics - Anfänger-Themen 4
C Kann kein Java Programm starten Java Basics - Anfänger-Themen 8
G Auf Bildschirm (kein Fenster) schreiben Java Basics - Anfänger-Themen 2
M Prüfen, ob Tag im Jahr kein Samstag/Sonntag ist Java Basics - Anfänger-Themen 7
G kein text im dialogfeld Java Basics - Anfänger-Themen 3
K JavaKara Programm - erfolgreich compiliert jedoch kein Start Java Basics - Anfänger-Themen 12
M SystemTray zeigt kein Icon an Java Basics - Anfänger-Themen 11
L Warum öffnet sich aus einer .jar-Datei kein Dosfenster? Java Basics - Anfänger-Themen 5
G Listen, über Listen. und doch kein Überblick Java Basics - Anfänger-Themen 8
I translate.java - kein sichtbarer fehler im quelltext Java Basics - Anfänger-Themen 18
S Kein wirklicher Ansatz Java Basics - Anfänger-Themen 6
F Kann kein Programm über die Konsole ausführen Java Basics - Anfänger-Themen 5
G Habe bei String kein split()? Java Basics - Anfänger-Themen 7
G Kein Runden Java Basics - Anfänger-Themen 3
G readln, aber kein writeln :( Java Basics - Anfänger-Themen 12
G Kein main Type? Java Basics - Anfänger-Themen 3
R Klasse nicht sichtbar(kein private-Fehler) Java Basics - Anfänger-Themen 2
H kein lösungs ansatz mit java Java Basics - Anfänger-Themen 4
S Layout Probleme (Kein Adden möglich) Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben