Array in Java

Liebe/-r Experte/-in,

ich habe eine Klass Kasse programiert, leider bekomme ich fehler in meine MainClasse, kann jemanden mir helfen.
meine Klasse ist ein Array von Preisen, die meine Methode addieren soll.
meine Classe sieht so aus:

public class Kasse {

int zahl;
int myarray[]= new int[zahl];

public Kasse(int[] myarray)
{
this.myarray = myarray;
}

public int summeRechnen()
{

int sum=0;
int laenge= myarray.length;
for (int i=0;i

Hallo rachid,

soweit ich sehen kann, hast du ein paar kleine Fehler oder Unschönheiten in
deinem Beispiel-Code.

In der Klasse Kasse bei den Attributdeklarationen definierst du folgende Attribute:

int zahl;
int myarray[]= new int[zahl];

Dabei initialisierst du das Array, was aber nicht nötig ist, da du im Konstruktor
dem Array den Wert aus dem Konstruktorparameter zuweist. Zudem ist ‚zahl‘ nicht
von die initialisiert, so dass es den Wert 0 hat. Das bedeutet, dass dein Array
entsprechend auch 0 Felder lang ist. Ist in dem Sinne kein Fehler, fällt aber auf :wink:

In der Methode summeRechnen() sind so einige Dinge drin:

public int summeRechnen()
{

int sum=0;
int laenge= myarray.length;
for (int i=0;i

Hallo rachid,

soweit ich sehen kann, hast du ein paar kleine Fehler oder Unschönheiten in
deinem Beispiel-Code.

In der Klasse Kasse bei den Attributdeklarationen definierst du folgende Attribute:

int zahl;
int myarray[]= new int[zahl];

Dabei initialisierst du das Array, was aber nicht nötig ist, da du im Konstruktor
dem Array den Wert aus dem Konstruktorparameter zuweist. Zudem ist ‚zahl‘ nicht
von die initialisiert, so dass es den Wert 0 hat. Das bedeutet, dass dein Array
entsprechend auch 0 Felder lang ist. Ist in dem Sinne kein Fehler, fällt aber auf :wink:

In der Methode summeRechnen() sind so einige Dinge drin:

public int summeRechnen()
{

int sum=0;
int laenge= myarray.length;
for (int i=0;i

Liebe/-r Experte/-in,

ich habe eine Klass Kasse programiert, leider bekomme ich
fehler in meine MainClasse, kann jemanden mir helfen.
meine Klasse ist ein Array von Preisen, die meine Methode
addieren soll.
meine Classe sieht so aus:

public class Kasse {

int zahl;
int myarray[]= new int[zahl];

public Kasse(int[] myarray)
{
this.myarray = myarray;
}

public int summeRechnen()
{

int sum=0;
int laenge= myarray.length;
for (int i=0;i

Du erzeugt mit Kasse[] links = new Kasse[3]; ein Array
von Instanzen des Typs Kasse. Dann weist Du einer
Variablen von Typ Kasse einen int Wert zu. Das führt zu
dem Fehler.

Was du wirklich willst ist:

int[] links = new int[4];

links[0]=12;
links[1]=23;
links[2]=34;
links[3]=13;

Kasse kasse = new Kasse(links);

Wenn Du ein Array vom Type Kasse deklarierst, dann muss Du auch Objekte vom
Typ Kasse da reinlegen:
Kasse[] links = new Kasse[3];

links[0]=12;

Liebe/-r Experte/-in,

ich habe eine Klass Kasse programiert, leider bekomme ich
fehler in meine MainClasse

Richtig, und zwar eine Fehlermeldung vom Compiler, weil dein Quelltext sich nicht
übersetzen lässt.

meine Klasse ist ein Array von Preisen, die meine Methode
addieren soll.
meine Classe sieht so aus:

public class Kasse {

int zahl;
int myarray[]= new int[zahl];

Das wird im Konstruktor wieder überschrieben. Die Zuweisung ist also
wirkungslos.

Außerdem: Welchen Wert hat „zahl“? Welche Länge hat dadurch das Array?

public Kasse(int[] myarray)
{
this.myarray = myarray;
}

public int summeRechnen()
{

int sum=0;
int laenge= myarray.length;
for (int i=0;i

Sie haben nicht 3 aber 4 Links ‚Instances‘. Schreiben Sie:
Kasse[] links = new Kasse[4];

Hallo,

mit

Kasse[] links = new Kasse[3];

erzeugst du ein Array von 3 Objekten des Typs Klasse per impliziten Default Konstruktor.

Du mußt für deine Zwecke erst ein int-Array erzeugen und das dann im Konstruktor übergeben, also z.B.

int testarray[]= new int[4];

testarray[0]=12;
testarray[1]=23;
testarray[2]=34;
testarray[3]=13;

Kasse links = new Kasse[testarray];

Das sollte funktionieren.

Hi rachid,

du erzeugst hier einen Array mit Kasseobjekten.

Kasse[] links = new Kasse[3];

links[0]=12;
links[1]=23;
links[2]=34;
links[3]=13;

Diesem kannst du keinen Int zuweisen.

vielleicht wolltest du sowas:
int[] links = new int[4];

links[0]=12;
links[1]=23;
links[2]=34;
links[3]=13;

Du solltest auch nicht den Konstruktor überschrieben. Übergebe deinen int[]
lieber in der Methode summeRechnen.

Kasse k=new Kasse();
k.summeRechnen(links);

Hoffe ich konnte helfen.

Gruß xrax

//Bei links[0]… bekomme ich fehler!!!

Hi,

mit ‚Kasse[] links = new Kasse[3];‘ erzeugst Du ein Array von Kassen-Objekten und dann weist Du ihnen int-Datentypen zu! Das kann nicht funktionieren weil ja verschiendene Datentypen:

Versuchs so

int[] links = new int[4];
/* 4 nicht 3! Ist etwas verwirrend, da bei der Länge des Arrays der index 0 nicht gezält wird*/

links[0]=12;
links[1]=23;
links[2]=34;
links[3]=13;

oder kürzer

int[] links = {12,23,34,13};

dann erzeuge ein neues Kassenobjekt und Du kannst die Summe berechnen!

Kasse kasse = new Kasse(links);
int summe = kasse.summeRechnen();

Viel Spass :smile:

Grüße

Fitnessfreak :smile:

Hallo Rachid,

also dein erster Fehler besteht in der Methode summeRechnen(). Da weist du in der Schleife jedem Feld den Wert der Variable zahl zu (da diese Variable nie initialisiert wird = 0). Das ist zwar kein Comilefehler, aber vermutlich auch nicht das was du damit erreichen willst :wink: Also einach statt
myarray[i]= zahl;
zahl = myarray[i];

So, nun zum Hauptproblem in der main-Methode. Du erstellst in der Ersten Zeile ein Array von Kasse-Instanzen. Das ist vermutlich auch nicht das was du willst. Du musst erst ein int-Array erzeugen, welchem du dann die Werte zuweist, und dieses dann dem Kasse-Konstruktor übergeben:

int[] werte = new int[4];
werte[0]=12;
werte[1]=23;
werte[2]=34;
werte[3]=13;
Kasse meineKasse = new Kasse(werte);
System.out.println(meineKasse.summeRechnen());

Grüße sanguinantis

Sagmal was möchtest du mit dieser Klassenkonstruktion erreichen? denn du hast mehrere Fehler „eingebaut“. Sag an was du erreichen möchtest und ich kann dir helfen.

Fehler zum Beispiel sind:

FALSCH:
//int zahl;
//int myarray[] = new int[this.zahl];

RICHTIG: denn Instanzvariablen müssen „private“ sein (Java Conventions) und auf diese Instanzvariablen wird nur über sogenannte Getter/Setter Methoden zugegriffen.
private int zahl;
private int myarray[] = new int[this.zahl];
.
…hier kommt noch was
.
public int getZahl()
{
return this.zahl;
}

public void setZahl(int zahl)
{
this.zahl = zahl;
}

public int[] getMyarray()
{
return this.myarray;
}

public void setMyarray(int[] myarray)
{
this.myarray = myarray;
}

FALSCH:
private int zahl;
private int myarray[] = new int[this.zahl];

du versuchst das Array myarray zu initialisieren ("…new int[this.zahl];"), aber die variable zahl ist noch nicht initialisiert ("…int zahl;").

und noch einige andere Fehler

also mein Vorschlag sag an was du erreichen willst und ich kann dir helfen

beste Grüße aus berlin