Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe die aufgabe eine kleine "bank simulation" fertig zu machen und da gehört auch das anlegen mehrer konten zu. ich habe mir jetzt gedacht ich erstelle ein array und speichere in jeder array position ein objekt vom typ konto(enthält name, kontonr.,... ).
soweit so gut hab alles vertig aber beim erstellen des arrays und beim aufruf/erstellen des objekts meckert er....
hier das erstellen des arrays
Code:
boolean n = false;
Konto.konto[] DBArray = new Konto.konto[100];
int anr = 0;
und hier des kontos
Code:
switch(w){
case 1:
DBArray[anr] = new Konto.konto();
break;
und die konto class sieht so aus
Code:
public class Konto {
public static void konto(){
String name = IO.promptAndReadString("Bitte Namen eingeben: ");
String vorname = IO.promptAndReadString("Bitte Vornamen eingeben: ");
int guthaben = IO.promptAndReadInt("Bitte Guthaben eingeben: ");
int blz = 360999;
int knr = 0;
if(guthaben <= 0)
{System.out.println("Sie können Ihr Konto nicht beim anlegen überziehen!!!");
}
knr = knr +1;
}
}
'meckert er.... ' ist auch eine tolle Fehlerbeschreibung
-------
allgemein solltest du nochmal nachlesen oder anscheinend überhaupt zum ersten Mal lesen,
was man unter einer Klasse mit Exemplarvariablen/ Klassenattributen und einem Konstruktor versteht,
die statische Operation legt sich vielleicht paar lokale Variablen an, aber ganz bestimmt kein Konto (Rückgabewert ist ja auch void)
hin mache läuft es aber er geht nur in die klass führt aber die methode nicht aus
Edit: wegen den konstruktoren, soweit ich verstanden habe sind die ja nur dazu da um default werte zu setzten und ich persönlich bevorzuge dann die variante die gemahct habe... das andereist mir sonst zuviel arbeit und zu komliziert
woran irgendwas liegt wage ich nicht zu mutmaßen, da du ja noch nicht gesagt was was überhaupt das Problem ist,
(edit: die Fehlermeldung hast du nun auch reingeschrieben)
new Konto.konto();
ist aber nicht erlaubte Syntax,
konto() hat den Rückgabewert void, welchen du nicht einem Array-Feld zuweisen kannst
und wie gesagt tut konto() bisschen so als hätte es was mit einem Konstrukor zu tun,
also hast du eine Menge zu tun, da genaue Verantwortlichkeiten zu identifizieren bringt nix,
vermischt sich ja alles
was ist ein "Konto.konto"? was ist 'auf und zu machen'?
sprichst du von der statischen Operation konto()?
die ist wie gesagt kein Konstruktor, das musst du noch ändern
oder wenn du bewußt keinen Konstruktor verwenden willst:
array = Konto.konto();
dann muss diese Operation aber das Konto erstellen und als Rückgabewert zurückgeben (statt void)
public class Run {
public static void main (String[]args){
int konto_nr;
int w;
boolean n = false;
Konto[] DBArray = new Konto[100];
int anr = 0;
while (n == false){
w = Menue.m();
if(w == 1 || w ==2 || w == 3 || w == 4){
switch(w){
case 1:
DBArray[anr] = new Konto.Konto();
break;
case 2:
break;
case 3:
break;
case 4:
break;
}
}
else {continue;}
w = Menue.c();
if ( w == 1 ){n = true;}
else{n = false;}
}
}
}
Code:
public class Menue {
public static int m(){
int w;
System.out.println("|*************************|");
System.out.println("|* Bank *|");
System.out.println("|*************************|");
System.out.println("|* 1 - Konto anlegen *|");
System.out.println("|* 2 - Einzahlen *|");
System.out.println("|* 3 - Abheben *|");
System.out.println("|* 4 - Kontodatenausgabe *|");
System.out.println("|*************************|");
w = IO.promptAndReadInt("Ihre Wahl: ");
return w;
}
public static int c(){
int w;
System.out.println("|*************************|");
System.out.println("|* Bank *|");
System.out.println("|*************************|");
System.out.println("|* Beeden? *|");
System.out.println("|* 1 - 'Ja' *|");
System.out.println("|* 2 - 'Nein' *|");
System.out.println("|*************************|");
w = IO.promptAndReadInt("Ihre Wahl: ");
return w;
}
}
und
Code:
public class Konto {
public void Konto(){
String name = IO.promptAndReadString("Bitte Namen eingeben: ");
String vorname = IO.promptAndReadString("Bitte Vornamen eingeben: ");
int guthaben = IO.promptAndReadInt("Bitte Guthaben eingeben: ");
int blz = 360999;
int knr = 0;
if(guthaben <= 0)
{System.out.println("Sie können Ihr Konto nicht beim anlegen überziehen!!!");
}
knr = knr +1;
}
}
ziel ist es sowas wie ne datenbank aufzubauen
ich will eigentlich ein konto erstellen, nur das ichs nicht in eine objektvariable wie z.B.
wenn ich folgendes machen würde
Konto k = new Konto;
sondern anstelle der objetvariablen (hier k) ein array setzten (hier DBArray[anr]) so, dass ich für jedes array 1-100 ein konto habe, mit name, nummer, blz,...
- Operationen klein schreiben, nur Konstruktoren groß!
- nie Operation wie die Klasse nennen, so heißen Konstruktoren!!
was meinste mit Operationen ??? bzw was sind Operation ???
Edit:
oder wenn du bewußt keinen Konstruktor verwenden willst:
array = Konto.konto();
dann muss diese Operation aber das Konto erstellen und als Rückgabewert zurückgeben (statt void)
Operationen sind alles was man aufrufen kann (mit () am Ende) bis auf die Konstruktoren
> wie lasse ich den ein konto sich selbst zurückgeben?
eine statische Operation ist einfach nur eine Operation unabhängig von der Klasse, die könnte genausogut in 'public class Menue' stehen,
nur weil du eine Operation aufrufst wird nicht automatisch irgendwo ein Objekt erzeugt,
solche Zaubereien gibts nur bei Konstruktoren: new Konto()
--------
übe doch erstmal EIN einzelnes Konto-Objekt zu erzeugen mit
Konto k = new Konto();
und überlege da, was deine statische Operation für eine Aufgabe hat oder wo dessen Code hinkommt wenn du keine statische Operation mehr benutzen willst,
DANACH kannst du immer noch etwas mit einem Array machen