# Mehrere Methoden verbinden



## MaxPower (29. Mrz 2009)

Hallo

wir programmieren zur Zeit in der Schule mit Bluej eine Geldkasse, die nur aus Geldscheinen besteht und bei der man etwas einzahlen und auszahlen kann. Jetzt möchten ich es so programmieren, dass man, wenn man etwas eingezahlt hat, der betrag nochmal erscheint und man dann mit r für richtig oder f für falsch bestätigen kann, ob der eingebene wert dem entspricht, was man will. Dies soll eine zusätzliche Sicherheit sein, falls man sich vertippt hat. Ich habe die Methode Einzahlen(int eing_anzahl5er, int eing_anzahl10er, int eing_anzahl20er, int eing_anzahl50er, int eing_anzahl100er, int eing_anzahl200er, int eing_anzahl500er) und die methode Bestaetigung(char eing_bestaetigung). Diese möchte ich nun miteinander verbinden, dass man erst die attributwerte von anzahl5er (die Anzahl der 5 euro scheine, die in der Geldkasse sin) usw. ändert und dann nochmal den wert auf den bildschirm erscheinen lässt und dann sich ein fenster öffnet, wo man j oder n eingeben kann, ob der wert stimmt. Wir sind erst am Anfang von Programmieren, daher haben wir so etwas noch nicht besprochen.


----------



## hdi (29. Mrz 2009)

Also erstmal Grundlagen:

Methoden-Namen erstellt man in sog. "*c*amel*C*ase", d.h.:

[HIGHLIGHT="Java"]Bestaetigung() // zwar syntaktisch korrekt, aber nicht "schön"
bestaetigung() // so macht man's "richtig"[/HIGHLIGHT]

Das gleiche trifft auf Variablen-Namen zu, also:

[HIGHLIGHT="Java"]int eing_Anzahl20er // nicht so toll
int eingAnzahl20er // besser[/HIGHLIGHT]

So, das nur mal so am Rande. Nun zu deiner Frage:
Du kannst innerhalb einer Methode andere Methoden aufrufen.

[HIGHLIGHT="Java"]public void einzahlen(deineParameter){
       boolean okay = this.bestaetigung(deineParameter);
       // falls das okay ist, dann mache es WIRKLICH:
       if(okay){
           // geldscheine wirklich anpassen
       }
}

private boolean bestaetigung(deineParameter){
       // hier "fakest" du die Erhöhung, d.h. du druckst die Anzahl der Scheine aus,
       // wie sie sein WÜRDE, falls du die Anfrage verarbeitest. Dann fragst du ob es okay ist

       Scanner s = new Scanner(System.in);
       int answer = s.nextInt();
       if(answer == 'j'){
              return true;
       }
       else{
           return false;
       }
       // Info: Das ganze ist jetzt noch nicht idiotensicher, wenn man zB "r" eingibt
       // gleicht das einem "n", wenn man "2304fshdifsd" eingibt kommt ein Fehler.
}[/HIGHLIGHT]

Meintest du das so? Du kannst natürlich die Scheine auch IMMER direkt verändern,
aber wenn das dann nicht korrekt war, naja dann kann man zwar "n" tippen, aber
bringen tut das einem herzlich wenig


----------



## MaxPower (31. Mrz 2009)

Also erstmal danke für deine antwort. :toll:
des mit den stilistischen fehlern werd ich nomal am schluss vom projekt durchschaun, dass des einigermaßen richtig ausschaut.

ich konnte aber leider die methode noch nicht ausprobieren, weil ich es nocht zum laufen gebracht hab. ich habe bei den eingabeparameter immer char eingabe eingegeben, aber die methode lässt sich nicht übersetzen. Es meldet den fehler in zeile 4 "'.class' expected".
[HIGHLIGHT="Java"]public class Kassa {

public void einzahlen(char eingabe){
       boolean okay = this.bestaetigung(char eingabe);
       // falls das okay ist, dann mache es WIRKLICH:
       if(okay){
           // geldscheine wirklich anpassen
       }
}

private boolean bestaetigung(char eingabe){
       // hier "fakest" du die Erhöhung, d.h. du druckst die Anzahl der Scheine aus,
       // wie sie sein WÜRDE, falls du die Anfrage verarbeitest. Dann fragst du ob es okay ist

       Scanner s = new Scanner(System.in);
       int answer = s.nextInt();
       if(answer == 'j'){
              return true;
       }
       else{
           return false;
       }
       // Info: Das ganze ist jetzt noch nicht idiotensicher, wenn man zB "r" eingibt
       // gleicht das einem "n", wenn man "2304fshdifsd" eingibt kommt ein Fehler.
    } 
}[/HIGHLIGHT]

ich bin kein österreicher, weil ich kassa geschrieben,
der name kasse war nur schon für meine andere klasse benutzt.


----------



## Geeeee (31. Mrz 2009)

[HIGHLIGHT="Java"] boolean okay = this.bestaetigung(char eingabe);
[/HIGHLIGHT]
wird zu 
[HIGHLIGHT="Java"] boolean okay = this.bestaetigung(eingabe);
[/HIGHLIGHT]


----------



## MaxPower (31. Mrz 2009)

ach man, des läuft immer noch nicht, jetzt meldet es "cannot find symbol - class Scanner" in Zeile 15. Wenn ich gewusst hätte, dass Java so nervig ist, häts ich wahrscheinlich nicht in der oberstufe genommen :shock:.


----------



## mc michi (31. Mrz 2009)

du musst am anfang java.util.Scanner importieren also mus dein code dann ungefähr so aussehen:
[highlight=Java]
import java.util.Scanner;
public class Kassa {

public void einzahlen(char eingabe){
       boolean okay = this.bestaetigung(eingabe);
       if(okay){
           }
}

private boolean bestaetigung(char eingabe){
        Scanner s = new Scanner(System.in);
       int answer = s.nextInt();
       if(answer == 'j'){
              return true;
       }
       else{
           return false;
       }
    } 
}[/highlight]

edit ich weiß nicht ob dein restlicher code ok ist aber das löst eigentlich den Fehler aus.


----------



## MaxPower (31. Mrz 2009)

cool, danke, jetzt lässt sich des schon einmal übersetzen, jetzt probier ich es mal mit richtigen werten aus


----------



## KSG9|sebastian (31. Mrz 2009)

MaxPower hat gesagt.:


> ach man, des läuft immer noch nicht, jetzt meldet es "cannot find symbol - class Scanner" in Zeile 15. Wenn ich gewusst hätte, dass Java so nervig ist, häts ich wahrscheinlich nicht in der oberstufe genommen :shock:.



Tja...programmieren kann nicht jeder - lesen hingegen die meisten. Dann scheitert es nur noch an der Faulheit.

Hättest die Schule gewusst dass du faul bist hätten sie dich gar nicht genommen? Java ist nunmal ne Programmiersprache und sehr, sehr mächtig. Das lernt man halt nicht durch google und kopieren von Code.
Entweder man versteht es oder nicht. Die Erwartungshaltung Java in 2 Wochen zu beherrschen kannst du aber getrost vergessen


----------



## MaxPower (31. Mrz 2009)

jaja, sehr mächtig xDDDDDDDDDD, des klingt sowie wie bei WoW ^^, des wird auch so hoch gepusht.
Ich kann halt noch net alles, wir haben nur zwei stunden in der woche um java zu üben, da weiß man net so viel. außerdem, du weißt doch gar net, ob ich faul bin oder net.


----------

