ÖVNINGSUPPGIFT

Uppgift 4 – Beräkna din nettolön

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.

Löner och skattesatser är påhittade för övningen och beskriver inte verklig skatt eller ett anställningsavtal.


Nyckelord: if-satsen, Scanner

Skriv ett program som räknar ut din nettolön

Linda vill ha hjälp att skriva ett program som hjälper henne att räkna ut hur mycket nettolön hon får ut för månaden, det vill säga lönen efter skatt. Skriv ett program som skriver ut hur mycket nettolön Linda får.

Lön 

  • Hon har en grundlön på 145 kr / timme.
  • För de timmar hon jobbar övertid har hon en lön på 240 kr / timme.

Antal timmar 

  • Ifall hon jobbar över 160 timmar i månaden får hon övertidsersättning på de timmar som är över 160. Det vill säga, jobbar Linda 172 timmar så får hon grundlön för 160 timmar och övertidslön för 12 timmar.
  • Programmet ska även ge ett felmeddelande ifall antal timmar är negativ eller större än 350.

Skatt

  • Lönen som anges är bruttolön, det vill säga före skatt. Hon har 20% skatt på grundlön och 25% skatt på övertidslönen.
public static void main (String[] args) {

    // Skriv din kod här

}
Ledtråd

Försök utan ledtråd denna gång ;-) Titta inte på lösningen för tidigt utan försök en extra gång själv först.

Lösning
// Importerar klassen Scanner
import java.util.Scanner;
public class Uppgift4 {
    public static void main(String[] args) {

        // Ange lön-variabler
        int salaryPerHour = 145;
        int salaryOvertime = 240;

        // Ange andelen som är kvar efter skatt. Faktorn 0.8 och 0.75 är resultatet av 20% och 25% avdrag för skatt respektive
        double taxes = 0.8;
        double taxesOvertime = 0.75;

        // Skapa en input från terminalen
        Scanner input = new Scanner(System.in);

        // Spara inputen från användaren
        System.out.println("Ange antal jobbade timmar under månaden");
        int hours = input.nextInt();

        // Ge felmeddelande om antal timmar är ogiltliga. Stäng av programmet.
        if (hours < 0 || hours > 350) {
            System.out.println("Felaktig inmatning. Antal timmar måste vara mellan 0 och 350, inklusive gränserna!");
            // Stänger av programmet
            System.exit(0);
        }

        // Skapa en variabel för totala lönen. Detta behöver vi göra för att garantera att kompilatorn vet att
        // variablen har skapats före utskriften.
        double salary = 0;

        // Första fallet är om arbetade timmar är lägre eller lika med 160
        if (hours <= 160) {
            salary = salaryPerHour * hours * taxes;
        }
        // Andra fallet är om det finns någon övertid
        else if (hours > 160) {
            // Beräkna antal övertidstimmar
            int overtime = hours - 160;
            //Beräkna totala lönen.
            salary = (160 * salaryPerHour) * taxes + (overtime * salaryOvertime) * taxesOvertime;
        }

        // Skriv ut svaret
        System.out.println("Lönen efter skatt blev: " + salary);

    }
}