Hi,
ich habe die Aufgabe ein Programm zu entwerfen, welches nach Eingabe von Name, Personalnummer, Stundenlohn und Arbeitsstunden auswertet und ausgibt. Sobald als Personalnummer 0 eingegeben wird, soll die Eingabe von Daten abgebrochen werden und zur Auswertung/Ausgabe fortgeschritten werden. Der Code.
Das Problem ist nun: Wenn ich eine 0 als Personalnummer eingeben, wird zwar die weitere Eingabe übersprungen, allerdings lande ich wieder in der while-Schleife drin, obwohl ich ja eigentlich ich verarbeitung() springe. Wo ist der Fehler?
ich habe die Aufgabe ein Programm zu entwerfen, welches nach Eingabe von Name, Personalnummer, Stundenlohn und Arbeitsstunden auswertet und ausgibt. Sobald als Personalnummer 0 eingegeben wird, soll die Eingabe von Daten abgebrochen werden und zur Auswertung/Ausgabe fortgeschritten werden. Der Code.
Code:
public class brutto {
public String[] persNr = new String[10]; //Array für Personalnummern
public String[] name = new String[10]; //Array für die Namen
public int[] stdlohn =new int[10]; //Array für den Stundenlohn
public int[] arbstd =new int[10]; //Array für die Arbeitstunden
public int[] brutto =new int[10]; //Array für die Bruttosumme
public double summe; //Lohnkosten insgesamt
public int pers=0; //Hilfvariable für Personen
public double durchstd; //Durchschnittliche Arbeitsstunden
public double durchlohn; //Durchschnittlicher Lohn
public int p=0; //Hilfsvariable für Arrays
public void eingabe() {
while(pers<3){
System.out.println("Geben sie die Personalnummer ein." );
persNr[p]=StdIn.stringInput();
if(persNr[p].equals("0")){
this.verarbeitung();
}
else{
System.out.println("Geben sie den Namen des Mitarbeiters ein." );
name[p]=StdIn.stringInput();
System.out.println("Geben sie die Arbeitsstunden des Mitarbeiters ein." );
arbstd[p]=StdIn.intInput();
System.out.println("Geben sie den Stundenlohn des Mitarbeiters ein." );
stdlohn[p]=StdIn.intInput();
brutto[p]=brutto[p]+(stdlohn[p]*arbstd[p]);
p++;
pers++;
}
}
}
public void verarbeitung() {
if(pers==0)
this.exit();
else{
for(int durch=0;durch<pers;durch++){
durchstd=durchstd+arbstd[durch]/pers;
durchlohn=durchlohn+stdlohn[durch]/pers;
}
}
for(int durch=0;durch<pers;durch++){
summe=summe+brutto[durch];
}
}
public void ausgabe() {
System.out.println("PersNr.\t Name\t Stunden\t Std. Lohn\t Brutto\t");
for(int aus=0;aus<pers;aus++){
System.out.println(persNr[aus]+"\t"+name[aus]+"\t"+arbstd[aus]+"\t"+stdlohn[aus]+"\t"+brutto[aus] );
}
System.out.println("Lohnsumme: "+summe);
System.out.println("Durchscnittslohn: " +durchlohn );
System.out.println("Durchschnittliche Arbeitsstunden: "+durchstd);
}
public void exit(){
System.exit(1);
}
public static void main (String[]args) {
brutto pro = new brutto();
pro.eingabe();
pro.verarbeitung();
pro.ausgabe();
pro.exit();
}
}
Das Problem ist nun: Wenn ich eine 0 als Personalnummer eingeben, wird zwar die weitere Eingabe übersprungen, allerdings lande ich wieder in der while-Schleife drin, obwohl ich ja eigentlich ich verarbeitung() springe. Wo ist der Fehler?