Lohnberechnung

Ama33

Mitglied
Es soll ein einfaches Programm „Lohnberechnung“ folgender Art erstellt werden: Eingegeben wird die Anzahl der pro Woche gearbeiteten Stunden sowie der Stundenlohn. Für jede über 40 Wochenstunden gearbeitete Stunde soll der anderthalbfache Stundenlohn zugeschlagen werden. Abzüge für zu wenig geleistete Stunden sind nicht vorgesehen. Bei 42 Arbeitsstunden und 18 € Stundenlohn beträgt der Lohn z. B. 40 ⋅ 18 € + 2 ⋅ 27 €.
 
Das ist ja schon mal ein Anfang (bitte Code-Tags zum Posten von Code verwenden (im Editor oben links auf </> klicken)).

Benennen wir die Variablen mal sauber:
Java:
double arbeitsstunden = InputBox.readDouble("Anzahl der pro Woche gearbeiteten Stunden ");
double stundenlohn = InputBox.readDouble("Stundenlohn ");

Als nächstes könnte man sich überlegen, dass alle Arbeitsstunden bis 40 Stunden "normale Stunden" sind und alles, was darüber liegt, Überstunden sind.
Java:
double normalstunden;
double ueberstunden;

if (arbeitsstunden <= 40) {
    // Dein Code
} else {
    // Dein Code
}
Überleg Dir, was beim Kommentar ("Dein Code") stehen müsste und ergänze das.
 
Java:
if (arbeitsstunden < 40) {
    stundenlohn  = ueberstunden
} else {
   stundenlohn = normalstunden
}

ist das richtig?
 
Wie wäre es, wenn Du einfach erst einmal in Worten formulierst, wie man das berechnen soll.

Also vergiss Java. Du erklärst eine Grundschülern, die das alles nicht versteht aber halt in Mathe die Grundrechenarten kennt, was sie machen muss.
 
Und hier irgendwelchen Java Code zu raten dürfte auch nicht zielführend sein. Daher: Immer erst den Algorithmus überlegen ehe man überhaupt anfängt, Code zu schreiben.
 
Also, weil die 15 Arbeitsstunden kleiner sind als 40 Arbeitsstunden sind es 15 Normalstunden. Richtig?
Java:
if (arbeitsstunden <= 40) {
    // Dein Code
}
 
Wie würdest du "was darüber kommt" berechnen?

Tipp: Es ist eine der vier Grundrechenarten, du kannst dich also nicht herausreden, dass es komplizierte Mathematik ist.
 
Überstunden = Arbeitsstunden - Normalstunden
Dann hast du ja jetzt alles was du benötigst. Auf geht's!
Java:
double normalstunden;
double ueberstunden;

if (arbeitsstunden <= 40) {
    // Dein Code
} else {
    // Dein Code
}

Die Aufgabe ist es aus den arbeitsstunden die normalstunden und die überstunden (falls vorhanden) zu berechnen.
 
Dann hast du ja jetzt alles was du benötigst. Auf geht's!
Java:
double normalstunden;
double ueberstunden;

if (arbeitsstunden <= 40) {
    // Dein Code
} else {
    // Dein Code
}

Die Aufgabe ist es aus den arbeitsstunden die normalstunden und die überstunden (falls vorhanden) zu berechnen.
Java:
double normalstunden;
double ueberstunden;

if (arbeitsstunden < 40) {
    normalstunden = arbeisstunden - ueberstunden
} else {
   ueberstunden = abeitsstunden - normalstunden
}
 
Äh, nein.

Schau dir die Bedingung der if-Abfrage an (die übrigens richtig gewesen ist und von dir falsch geändert wurde). Was bedeutet die genau?
weil alles bis 40 sind Normalstunden und was kommt darüber ist Überstunden
Wenn du weißt, dass alle Arbeitsstunden bis 40 (inklusive) Normalstunden sind, was muss dann im ersten Block der if-Abfrage stehen?
 
Zuletzt bearbeitet:
Also noch ein Tipp und dann geh ich ins Bett.

Der erste Teil der Lösung lautet:

Wenn die Anzahl der Arbeitsstunden kleiner oder gleich 40 ist, dann entsprechen die Normalstunden den Arbeitsstunden und es gibt keine Überstunden.

Der zweite Teil gilt dann für den Fall, dass es mehr als 40 Arbeitsstunden sind.


Java:
    public static double berechneGehalt(double a, double s) {
        return (a <= 40 ? a : 40) * s + (a - 40 > 0 ? a - 40 : 0) * s * 1.5;
    }
 
Zuletzt bearbeitet:
Java:
public static void main(String[] args) {
        double arbeitsstunden = InputBox.readDouble("Anzahl der pro Woche gearbeiteten Stunden ");
        double stundenlohn = InputBox.readDouble("Stundenlohn ");
        double normalstunden;
        double ueberstunden;

        if (arbeitsstunden <=  40)
             arbeitsstunden = normalstunden;
        
         else {
             ueberstunden = arbeitsstunden - normalstunden;
            
            
        }   

    }

}
 

Neue Themen


Zurück
Oben