redfalcon
2005-06-12, 12:34:15
Moin,
ich hab hier ein kleines Problemchen mit einem Programm, wass den Bruttolohn aus Arbeitsstunden und Stundenlohn von Mitarbeitern berechnen soll (Hausaufgabe). Programm funzt soweit. Wenn ich aber nur einen Mitarbeiter eingebe, und die Berechungen für die durchführe, werden die Lohnkosten insgesamt, die Durchschnittsarbeitszeit und der Durchschnitsslohn verdoppelt.
Die Durchschnittswerte werden in der Methode verarbeitung() berechnet.
Der Code:
public class brutto {
public String[] persNr = new String[10]; //Array für Personalnummern
public String[] name = new String[10]; //Array für Namen
public int[] stdlohn =new int[10]; //Array für Stundenlohn
public int[] arbstd =new int[10]; //Array für Arbeitsstunden
public int[] brutto =new int[10]; //Array für Bruttolohnsumme
public double summe; //Gesamtlohnsumme
public int pers=0; //Anzahl Personen
public double durchstd; //Durchschnittliche Arbeitsstunden
public double durchlohn; //Durchschnittlicher Lohn
public int p=0; //Hilfsvariable für While-Schleife
boolean run = true; //Boolean zum beenden der While-Schleife
//Eingabe
public void eingabe() {
while(run == true && pers < 10) {
System.out.println("Geben sie die Personalnummer ein." );
persNr[p]=StdIn.stringInput();
if(persNr[p].equals("0")){
run = false;
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++;
StdIn.cls();
}
}
}
//Verarbeitung
public void verarbeitung() {
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];
}
}
//Ausgabe
public void ausgabe() {
System.out.println("PersNr.\t Name\t\t Stunden Std.Lohn Brutto");
for(int aus=0;aus<pers;aus++){
System.out.println(persNr[aus]+"\t"+name[aus]+"\t "+arbstd[aus]+"\t "+stdlohn[aus]+"\t "+brutto[aus]+"\n" );
}
System.out.println("Lohnsumme: "+summe);
System.out.println("Durchscnittslohn: " +durchlohn );
System.out.println("Durchschnittliche Arbeitsstunden: "+durchstd);
}
//Main
public static void main (String[]args) {
brutto pro = new brutto();
pro.eingabe();
pro.verarbeitung();
pro.ausgabe();
}
}
Imo liegen bei der Berechnung der Durchschnittswerte keine Fehler vor, warum werden die Durchschnittswerte bei einer Eingabe verdoppelt? Sobald ich zwei oder mehr Personen eingebe, stimmen die Durchschnittswerte wieder.
ich hab hier ein kleines Problemchen mit einem Programm, wass den Bruttolohn aus Arbeitsstunden und Stundenlohn von Mitarbeitern berechnen soll (Hausaufgabe). Programm funzt soweit. Wenn ich aber nur einen Mitarbeiter eingebe, und die Berechungen für die durchführe, werden die Lohnkosten insgesamt, die Durchschnittsarbeitszeit und der Durchschnitsslohn verdoppelt.
Die Durchschnittswerte werden in der Methode verarbeitung() berechnet.
Der Code:
public class brutto {
public String[] persNr = new String[10]; //Array für Personalnummern
public String[] name = new String[10]; //Array für Namen
public int[] stdlohn =new int[10]; //Array für Stundenlohn
public int[] arbstd =new int[10]; //Array für Arbeitsstunden
public int[] brutto =new int[10]; //Array für Bruttolohnsumme
public double summe; //Gesamtlohnsumme
public int pers=0; //Anzahl Personen
public double durchstd; //Durchschnittliche Arbeitsstunden
public double durchlohn; //Durchschnittlicher Lohn
public int p=0; //Hilfsvariable für While-Schleife
boolean run = true; //Boolean zum beenden der While-Schleife
//Eingabe
public void eingabe() {
while(run == true && pers < 10) {
System.out.println("Geben sie die Personalnummer ein." );
persNr[p]=StdIn.stringInput();
if(persNr[p].equals("0")){
run = false;
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++;
StdIn.cls();
}
}
}
//Verarbeitung
public void verarbeitung() {
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];
}
}
//Ausgabe
public void ausgabe() {
System.out.println("PersNr.\t Name\t\t Stunden Std.Lohn Brutto");
for(int aus=0;aus<pers;aus++){
System.out.println(persNr[aus]+"\t"+name[aus]+"\t "+arbstd[aus]+"\t "+stdlohn[aus]+"\t "+brutto[aus]+"\n" );
}
System.out.println("Lohnsumme: "+summe);
System.out.println("Durchscnittslohn: " +durchlohn );
System.out.println("Durchschnittliche Arbeitsstunden: "+durchstd);
}
//Main
public static void main (String[]args) {
brutto pro = new brutto();
pro.eingabe();
pro.verarbeitung();
pro.ausgabe();
}
}
Imo liegen bei der Berechnung der Durchschnittswerte keine Fehler vor, warum werden die Durchschnittswerte bei einer Eingabe verdoppelt? Sobald ich zwei oder mehr Personen eingebe, stimmen die Durchschnittswerte wieder.