Array vom Typ Klasse

PaulDo

Aktives Mitglied
public class Kunde {
// Attribut
public int nr;

// Konstruktor
public Kunde(int nr) {
this.nr = nr;

//neue Klasse
public class Rechnungserstellung {

//Attribut
Kunde [] arr = {};

//Methode
int summeBerechnung() {
int sum = 0;
for(int i = 0; i<arr.length; i++) {
sum += arr // Fehlermeldung Operator '+' cannot be applied to 'int', 'Kunde'


//Frage
Woran könnte das liegen?
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Du versuchst ein int und ein Kunde zu addieren.

sum ist ein int.
Das arr ist ein Array von Kunde.

Und das kann man nicht addieren. Oder was ist 7 + 1 Apfel + 3 Schulbusse?
 

PaulDo

Aktives Mitglied
Ja, das klingt logisch. Warum aber funktioniert das :

temp[5]={2,5,7,9,10};

for (int i=0;i < 5;i++)

summ += temp ; // temp ist auch ein array
 

httpdigest

Top Contributor
Bitte nutze doch den Codeblock (das "</>" Symbol im Editor), um Code zu schreiben...
Ich nehme mal an, dein Code sollte so aussehen:
Java:
int summe = 0;
int[] temp = {2,5,7,9,10};
for (int i = 0; i < 5; i++) {
  summe += temp[i];
}
Warum das nun geht?
Naja,... weil du jetzt ja zwei int miteinander addierst.
Der += Operator ist ja nichts anderes im obigen Fall, als:
Java:
summe = summe + temp[i];
Und summe + temp[i] ist vom Typ her ein int, weil sowohl summe als auch temp[i] jeweils int sind.
temp selbst ist vom Typ int[] (also Array of int), aber durch den Indexierungsoperator (also dem [i]) adressierst du ja einen einzelnen int aus dem Array. Und dann hast du halt einen int.
 

KonradN

Super-Moderator
Mitarbeiter
Zur Ergänzung evtl. noch:
Generell ist klar festgelegt worden, was mit dem + Operator gemacht werden kann. So ist in der Java Language Specification klar aufgeführt, von welchem Typ die Operanden sein dürfen und was dann das Ergebnis ist.

Beispiele wären hier z.B. 5 + 7 = 13 -> Wenn beide Operanden ein int sind, dann kommt auch ein int heraus.

Komplizierter wird es mit 1.0 + 2 = 3.0 -> Ein Operand ist ein double. Der zweite Operand ist ein int. Da wird dann der int zu einem double gemacht und das Ergebnis ist ein double.

Und noch komplizierter wird es mit etwas wie "Ergebnis := " + 42
Das wird aber auch im Detail beschrieben - die Zahl wird zu einer Instanz einer Klasse und da wird dann toString aufgerufen. Also etwas wie
"Ergebnis := " + new Integer(42).toString()

So kann man alle Regeln durchgehen. Diese sollte man auch kennen und daher kann ich nur empfehlen, diese in einem Lehrbuch oder Tutorial anzusehen und damit zu spielen. Das ist halt wichtig, wenn es um Berechnungen geht - um dann zu verstehen, was 7 / 3 und 7.0 / 3 jeweils bedeuten. (So kompliziert ist es nicht!).

Aber nun zu dem Code von Dir:
Nun ist es generell so: Die Addition von einem int und einem Array ist generell nicht definiert. Das lässt sich nie addieren! Da ist der Typ, der in dem Array gespeichert wurde, egal. Addition einer Referenz geht nur mit einem String - also "" + someReference oder someReference + "".

Aber Du addierst (hoffentlich) nicht mit einem Array! Das erkennt man bei Dir nur sehr schlecht, denn das [i] in Deinem Text hat das Forum als Anweisung verstanden, ab da den Text kursiv darzustellen. Bei den [ ] handelt es sich um einen Array Operator. Du hast also auf das Array erst diesen Array Operator angewendet. Und das Ergebnis, das wurde dann addiert. Das Ergebnis ist also vom Typ, der in dem Array gespeichert wurde.

Das wird evtl. deutlicher, wenn man diese zwei Operationen trennt:
Java:
Kunde[] arr;
arr = ..... ; // Wird natürlich irgendwie initialisiert
int i = ....; // für den Zugriff brauchen wir den index, auf den wir zugreifen wollen
int sum = ..; // Ein sum gab es auch

// sum += arr[i]; aufgeteilt ist nun:
Kunde temp = arr[i];
sum += temp; // ist ja sum = sum + temp; und sum ist int, temp ist Kunde, int + Kunde geht nicht

Mit dem int Array sieht es dann so aus:
Code:
int[] arr;
arr = ..... ; // Wird natürlich irgendwie initialisiert
int i = ....; // für den Zugriff brauchen wir den index, auf den wir zugreifen wollen
int sum = ..; // Ein sum gab es auch

// sum += arr[i]; aufgeteilt ist nun:
int temp = arr[i];
sum += temp; // ist ja sum = sum + temp; und sum ist int, temp ist int, int + int geht und gibt ein int!

Das hilft evtl., die Verwirrungen um das Array zu verstehen.
 

PaulDo

Aktives Mitglied
Zur Ergänzung evtl. noch:
Generell ist klar festgelegt worden, was mit dem + Operator gemacht werden kann. So ist in der Java Language Specification klar aufgeführt, von welchem Typ die Operanden sein dürfen und was dann das Ergebnis ist.

Beispiele wären hier z.B. 5 + 7 = 13 -> Wenn beide Operanden ein int sind, dann kommt auch ein int heraus.

Komplizierter wird es mit 1.0 + 2 = 3.0 -> Ein Operand ist ein double. Der zweite Operand ist ein int. Da wird dann der int zu einem double gemacht und das Ergebnis ist ein double.

Und noch komplizierter wird es mit etwas wie "Ergebnis := " + 42
Das wird aber auch im Detail beschrieben - die Zahl wird zu einer Instanz einer Klasse und da wird dann toString aufgerufen. Also etwas wie
"Ergebnis := " + new Integer(42).toString()

So kann man alle Regeln durchgehen. Diese sollte man auch kennen und daher kann ich nur empfehlen, diese in einem Lehrbuch oder Tutorial anzusehen und damit zu spielen. Das ist halt wichtig, wenn es um Berechnungen geht - um dann zu verstehen, was 7 / 3 und 7.0 / 3 jeweils bedeuten. (So kompliziert ist es nicht!).

Aber nun zu dem Code von Dir:
Nun ist es generell so: Die Addition von einem int und einem Array ist generell nicht definiert. Das lässt sich nie addieren! Da ist der Typ, der in dem Array gespeichert wurde, egal. Addition einer Referenz geht nur mit einem String - also "" + someReference oder someReference + "".

Aber Du addierst (hoffentlich) nicht mit einem Array! Das erkennt man bei Dir nur sehr schlecht, denn das [i] in Deinem Text hat das Forum als Anweisung verstanden, ab da den Text kursiv darzustellen. Bei den [ ] handelt es sich um einen Array Operator. Du hast also auf das Array erst diesen Array Operator angewendet. Und das Ergebnis, das wurde dann addiert. Das Ergebnis ist also vom Typ, der in dem Array gespeichert wurde.

Das wird evtl. deutlicher, wenn man diese zwei Operationen trennt:
Java:
Kunde[] arr;
arr = ..... ; // Wird natürlich irgendwie initialisiert
int i = ....; // für den Zugriff brauchen wir den index, auf den wir zugreifen wollen
int sum = ..; // Ein sum gab es auch

// sum += arr[i]; aufgeteilt ist nun:
Kunde temp = arr[i];
sum += temp; // ist ja sum = sum + temp; und sum ist int, temp ist Kunde, int + Kunde geht nicht

Mit dem int Array sieht es dann so aus:
Code:
int[] arr;
arr = ..... ; // Wird natürlich irgendwie initialisiert
int i = ....; // für den Zugriff brauchen wir den index, auf den wir zugreifen wollen
int sum = ..; // Ein sum gab es auch

// sum += arr[i]; aufgeteilt ist nun:
int temp = arr[i];
sum += temp; // ist ja sum = sum + temp; und sum ist int, temp ist int, int + int geht und gibt ein int!

Das hilft evtl., die Verwirrungen um das Array zu verstehen.


int temp = arr bedeutet- temp übernimmt den Inhalt von temp/ ohne cast bleibt es aber ein int?
Kunde temp = arr; bedeutet- temp wird zu einem Array/ ohne cast ist dies möglich/Kunde ist ein Objekt mit int Wert?
Nur wie kann ich nun mit meinem class Array rechnen?
 

httpdigest

Top Contributor
Wenn du Code schreibst, nutze den </> Button im Editor, oder für Inline-Code [icode]int temp = arr[i][/icode] oder Backticks `int temp = arr[i]`!
 

KonradN

Super-Moderator
Mitarbeiter
Also int temp = arr[i] bedeutet mehreres:
a) Es wird eine neue (hier lokale) Variable temp deklariert vom Typ int.
b) Es wird evaluiert: das Element mit index i vom Array arr wird genommen. Und dieses Ergebnis wird temp zugewiesen.

Das Element i vom Array arr ist bei int[] arr ein int. Bei Kunde[] arr wäre es vom Typ Kunde.

Edit: Noch einmal überarbeitet ... er hat mit aus `i ein ì gemacht :)
 

Neumi5694

Top Contributor
int temp = arr bedeutet- temp übernimmt den Inhalt von temp/ ohne cast bleibt es aber ein int?
Kunde temp = arr; bedeutet- temp wird zu einem Array/ ohne cast ist dies möglich/Kunde ist ein Objekt mit int Wert?
Nur wie kann ich nun mit meinem class Array rechnen?
Ein Kunde hat keinen Wert, also kannst du damit auch nichts mathematisches machen.
Ein Beispiel, um von Kunden auf einen Wert zu kommen, wäre z.B.
Java:
kundenArray[index].getBargeld()
//oder
kundenArray[index].getAlter()

ps: und echt jetzt, verwende Code Tags, wenn du Code postest
 

PaulDo

Aktives Mitglied
Java:
public class Kunde {
    // ...
}
public class Rechnung {
    private Kunde rechnungsempfänger;
}
public Kunde liefereRechnungsempfaenger(){
    return this.rechnungsempfaenger;
}
public int bestimmeBetragInCent(){}
}
public class Rechnungssammlung{
    private Rechnung[] rechnungen;
}
Die Aufgabe ist: implementieren Sie eine Methode int bestimmeGesamtbetragAllerRechnungenVon (Kunde k)
Code:
// Lösung
if(k== null || rechnungen == null){
return 0;
}

int betrag = 0;
for(Rechnung r : rechnungen)
if(r.liefereRechnungsempfaenger() == k)
// Betrag dazu addieren
betrag += r.bestimmeBetragInCent();
}
}
return betrag;
Darum gehe ich davon aus, dass ein int Wert mit dem Array rechnungen addiert wird.
 

httpdigest

Top Contributor
Darum gehe ich davon aus, dass ein int Wert mit dem Array rechnungen addiert wird.
Nein. Du "addierst" hier keinen int Wert mit einem Array.
Du addierst hier wiederholt einen int Wert zu einem anderen int Wert hinzu.
Und du nutzt eine Schleife als Kontrollstruktur, um über alle Elemente in einem Array zu iterieren.
Aber die "Additionen" passieren hier nicht auf einem Array, sondern auf int Werten pro jeweils einem Element in dem Array (und dessen bestimmeBetragInCent().
 

Neumi5694

Top Contributor
int betrag = 0;
for(Rechnung r : rechnungen)
if(r.liefereRechnungsempfaenger() == k)
// Betrag dazu addieren
betrag += r.bestimmeBetragInCent();
}
}
return betrag;[/CODE] Darum gehe ich davon aus, dass ein int Wert mit dem Array rechnungen addiert wird.
Wo steht denn hier, dass einem Array was dazuaddiert wird?
Ich sehe da eine Variable namens "betrag", der etwas hinzuaddiert wird, nämlich das ergebnis von r.bestimmeBetragInCent().
Auch "r" ist kein Array, sondern eine in dem Array gespeicherte Rechnung.

Was du hier hast, ist eine for-each-Schleife.
Der Code in Worten ausgedrückt, ist ungefähr dieser

Code:
int Summe = 0; //Taschenrechner einschalten
//Gehe alle Rechnungen durch
Für jede Rechnung auf dem Stapel Rechnungen mach folgendes: {
  Falls die Rechnung auf Kunde XY ausgestellt ist ... {
    ... dann addiere den Rechnungsbetrag zur Summe hinzu.
    //von der Rechnung den Centbetrag ablesen und im Taschenrechner + ... eintippen
  }
}
 

PaulDo

Aktives Mitglied
Wo steht denn hier, dass einem Array was dazuaddiert wird?
Ich sehe da eine Variable namens "betrag", der etwas hinzuaddiert wird, nämlich das ergebnis von r.bestimmeBetragInCent().
Auch "r" ist kein Array, sondern eine in dem Array gespeicherte Rechnung.

Was du hier hast, ist eine for-each-Schleife.
Der Code in Worten ausgedrückt, ist ungefähr dieser

Code:
int Summe = 0; //Taschenrechner einschalten
//Gehe alle Rechnungen durch
Für jede Rechnung auf dem Stapel Rechnungen mach folgendes: {
  Falls die Rechnung auf Kunde XY ausgestellt ist ... {
    ... dann addiere den Rechnungsbetrag zur Summe hinzu.
    //von der Rechnung den Centbetrag ablesen und im Taschenrechner + ... eintippen
  }
}
Danke erst einmal. Ich probiere es noch einmal neu.
 

PaulDo

Aktives Mitglied
Wie bekomme ich meinen Array "Rechnung[] rechnungen" mit den errechneten Werten meiner Methode "bestimmeBetragInCent()" gefüllt?
 

Neumi5694

Top Contributor
Wie bekomme ich meinen Array "Rechnung[] rechnungen" mit den errechneten Werten meiner Methode "bestimmeBetragInCent()" gefüllt?
Gar nicht, da dein Array Rechnungen aufnimmt und keine Beträge.

Nach dem, was oben steht, ist die genannte Methode die Eigenschaft einer Rechnung.
Hast du eigentlich irgend einen von den Kommentaren oben gelesen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
I Array Länge in Klasse festlegen Java Basics - Anfänger-Themen 1
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
T KLasse das bessere Array Java Basics - Anfänger-Themen 16
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
K Klasse mit einer Array-Eigenschaft Java Basics - Anfänger-Themen 4
F Auf Array einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 4
K Klassen Array einer anderen Klasse ... Java Basics - Anfänger-Themen 21
J Array Objekte einer Klasse zuordnen Java Basics - Anfänger-Themen 15
S Auf Array einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 13
H Best Practice Klasse mit Array clonen Java Basics - Anfänger-Themen 8
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
T Array in andere Klasse verwenden Java Basics - Anfänger-Themen 3
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
G Klassen Array durch eine Klasse aufrufen Java Basics - Anfänger-Themen 4
B Fehlermeldung bei Klasse mit array Java Basics - Anfänger-Themen 3
S Klassen Array: Übergabe von Klasse zur Main Java Basics - Anfänger-Themen 8
A Array aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 9
F Adressverwaltungsprogramm: Objekte einer Klasse in Array Java Basics - Anfänger-Themen 6
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
A Auf Array in gesamter Klasse zugreifen Java Basics - Anfänger-Themen 6
H Methoden Array aus Punkten erzeugen, mittels Punkt-Klasse Java Basics - Anfänger-Themen 5
B Array aus Klasse zurück geben Java Basics - Anfänger-Themen 2
D Klassen Problem mit Eigener Array-Klasse Java Basics - Anfänger-Themen 10
F Array als Instanz einer Klasse Java Basics - Anfänger-Themen 8
C Referenzen zu Instanzen einer Klasse im Array Java Basics - Anfänger-Themen 8
K Klasse als Array Java Basics - Anfänger-Themen 3
C Klassen Array-Klasse gesucht Java Basics - Anfänger-Themen 4
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
A Ein Array aus einer Klasse wird nicht sauber abgefüllt Java Basics - Anfänger-Themen 4
A Array einer eigenen Klasse sortieren Java Basics - Anfänger-Themen 11
G Eigene Klasse als Array, zugriff? Java Basics - Anfänger-Themen 2
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
L Klasse in array schreiben Java Basics - Anfänger-Themen 2
T Char Array in fremder Klasse Java Basics - Anfänger-Themen 20
A Mehrere Instanzen einer eigenen Klasse in einem Array Java Basics - Anfänger-Themen 5
F Array aus selbstdefinierter Klasse Java Basics - Anfänger-Themen 6
J Zugriff auf ein Array über eine andere Klasse Java Basics - Anfänger-Themen 7
F Array einer eigenen Klasse erstellen. Java Basics - Anfänger-Themen 8
D "Ueber"-Klasse? / Label Array Probleme Java Basics - Anfänger-Themen 2
M probleme mit array (als attribut einer klasse) Java Basics - Anfänger-Themen 2
F Array einer eigenen Klasse Java Basics - Anfänger-Themen 5
C Array in Klasse aber keinen Zugriff Java Basics - Anfänger-Themen 7
V Array in andere Klasse laden Java Basics - Anfänger-Themen 12
P Array in Klasse geht nich Java Basics - Anfänger-Themen 8
N array klasse Java Basics - Anfänger-Themen 7
T Array über Klasse instanziieren Java Basics - Anfänger-Themen 5
G Array Objekte Klasse Java Basics - Anfänger-Themen 9
M Aus einer Klasse auf Array einer anderen zugreifen. WIE? Java Basics - Anfänger-Themen 4
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben