If-satser: Övningsuppgifter

Övningsuppgift 1

Ett bussbolag vill ha hjälp med att skriva ett program som ska räkna ut biljettpriset för en resenär.

  • Standardpriset för en vuxen är 200 kr, men ungdomar får 20% rabatt och pensionärer får 30% rabatt.
  • För att räknas som ungdom behöver personen var under 18 år och för att räknas som pensionär ska personen vara över 65 år.

Din uppgift blir att skriva ett program som frågar personen hur gammal han/hon är och baserat på standardpriset skriva ut biljettpriset. Du kan räkna åldern i hela år och anta att personen alltid skriver i rätt format, förslagsvis en int. Dock får inga negativa tal förekomma, då ska ett felmeddelande skrivas ut.

public static void main (String[] args) {

    // Skriv din kod här

}

Lösning

public static void main(String[] args) {
    final int TICKET = 200;
    Scanner in = new Scanner(System.in);
    System.out.println("Ange din ålder: ");
    int input = in.nextInt();
    if (input < 0 ){
        System.out.println("Felaktigt");
    }
    else if (input < 18){
        System.out.println("Biljettpriset blir: " + ( TICKET * 0.8));
    }
    else if (input > 65){
        System.out.println("Biljettpriset blir: " + ( TICKET * 0.7));
    }
    else {
         System.out.println("Biljettpriset blir: " +  TICKET);
    }
}

Övningsuppgift 2

Företaget Kakelplattan AB vill ha hjälp med att skriva ett program som ska hjälpa hantverkaren att veta hur många kakelpaket, hur många säckar kakelfix samt hur många säckar kakelfog som ska tas med till respektive kund. Din uppgift blir att skriva ett program som frågar vad för typ av arbete det är och hur många kvadratmeter det är.

Det kan vara tre olika typ av arbeten, Badrum ( B ), Hall ( H ) och Kök ( K ). Du kan använda bokstaven i parentesen för att ange respektive arbete. Ifall hantverkaren anger fel kommando för arbete eller ett värde mindre än noll för kvadratmeter så ska programmet ge ett felmeddelande.

Ett paket kakelplattor innehåller 32 stycken plattor, en säck kakelfix väger 5 kg och en säck kakelfog väger 3 kg.

Ett badrum behöver per kvadratmeter

  • Kakelplattor: 15 st
  • Kakelfix: 0,7 kg
  • Kakelfog: 0,4 kg

En hall behöver per kvadratmeter

  • Kakelplattor: 8
  • Kakelfix: 0,3 kg
  • Kakelfog: 0,25 kg

Ett kök behöver per kvadratmeter

  • Kakelplattor: 12 st
  • Kakelfix: 0,2 kg
  • Kakelfog: 0,15 kg

Eftersom hantverkaren inte kan ta med sig halva paket eller delar av säckar så måste uträkningen alltid avrundas uppåt. Det vill säga ifall beräkningen blir 7,1 paket kakelplattor ska det avrundas till 8 paket kakelplattor, så inte hantverkaren får för lite material med sig.

public static void main (String[] args) {

    // Skriv din kod här

}

Lösning

public static void main (String[] args){
   double kakelPlattor;
   double kakelFix;
   double kakelFog;
   Scanner input = new Scanner(System.in);
   System.out.println("Vad för typ av arbete är det? Ange \n B för badrum \n H för hall \n K för kök" );
   String work = input.nextLine();
   if (!(work.equalsIgnoreCase("B") || work.equalsIgnoreCase("H")
            || work.equalsIgnoreCase("K"))){
        System.out.println("Fel input, starta om programmet och försök igen");
        }
   else {
        System.out.println("Hur många kvadratmeter är det? ");
        double kvm = input.nextDouble();
   if (work.equalsIgnoreCase("B") && kvm > 0){
        kakelPlattor =  Math.ceil((15 * kvm) / 32);
        kakelFix = Math.ceil((0.7 * kvm) /5);
        kakelFog = Math.ceil((0.4 * kvm) /3);
        System.out.println("Ta med \nKakelpaket: " + kakelPlattor + " paket \nKakelfix: "+ kakelFix + " säckar " +
               "\nKakelfix: " +  kakelFog + " säckar");
        }
    else if (work.equalsIgnoreCase("H") && kvm > 0){
        kakelPlattor =  Math.ceil((8 * kvm) / 32);
        kakelFix = Math.ceil((0.3 * kvm) /5);
        kakelFog = Math.ceil((0.25 * kvm) /3);
        System.out.println("Ta med \nKakelpaket: " + kakelPlattor + " paket \nKakelfix: "+ kakelFix + " säckar " +
                "\nKakelfix: " +  kakelFog + " säckar");
       }
    else if (work.equalsIgnoreCase("K") && kvm > 0){
        kakelPlattor =  Math.ceil((12 * kvm) / 32);
        kakelFix = Math.ceil((0.2 * kvm) /5);
        kakelFog = Math.ceil((0.15 * kvm) /3);
        System.out.println("Ta med \nKakelpaket: " + kakelPlattor + " paket \nKakelfix: "+ kakelFix + " säckar " +
              "\nKakelfix: " +  kakelFog + " säckar");
      }
    else {
        System.out.println("Fel input, starta om programmet och försök igen");
        }
    }
}


Övningsuppgift 3

En lärare vill skriva ett program för att beräkna slutbetyget för sina elever i kurs. Följande gäller:

  • Om medelpoängen är över eller lika med 90%  får studenten betyg  MVG
  • Om medelpoängen är över eller lika med 70% och under 90% får studenten betyg  VG
  • Om medelpoängen är över eller lika med 50% och under 70% får studenten betyg  G
  • Om medelpoängen är under 50%  får studenten betyg  U

Kursen har tre moment som påverkar betyget och på varje moment är maxpoängen 100 poäng.

Använd dig av den givna koden nedan som frågar användaren att skriva in sina poäng för tre olika moment.

Obs: du kan anta att användaren alltid skriver rätt intervall ( 0 – 100 ) och anger ett heltal som input.

public static void main (String[] args){
   Scanner input = new Scanner(System.in);

   // Frågar om moment 1 och sparar ned i variabel med namn assignment
   System.out.println("Ange poäng på inlämningsuppgiften: ");
   int assignment = input.nextInt();

   // Frågar om moment 2 och sparar ned i variabel med namn presentation
   System.out.println("Ange poäng på presentationen: ");
   int presentation = input.nextInt();

   // Frågar om moment 3 och sparar ned i variabel med namn test
   System.out.println("Ange poäng på provet: ");
   int test = input.nextInt();

   // Skriv din kod här. Skriv sedan ut vilket betyg studenten får.

}

Lösning

public static void main (String[] args){
        Scanner input = new Scanner(System.in);
        // Frågar om moment 1 och sparar ned i variabel med namn assignment
        System.out.println("Ange poäng på inlämningsuppgiften: ");
        int assignment = input.nextInt();
        // Frågar om moment 2 och sparar ned i variabel med namn presentation
        System.out.println("Ange poäng på presentationen: ");
        int presentation = input.nextInt();
        // Frågar om moment 3 och sparar ned i variabel med namn test
        System.out.println("Ange poäng på provet: ");
        int test = input.nextInt();
        // Maxpoängen per uppgift är hundra, och antal uppgifter är 3
        int maxPoints = 100;
        int nmbrOfAssignments = 3;
        // Summera elevens poäng
        int sumPoints = assignment + presentation + test;
        // Beräkna medelvärdet
        double meanPoints = sumPoints/nmbrOfAssignments;
        // Beräkna procenten av maxvärdet (I detta fall samma som meanPoints)
        double meanPercentage = (meanPoints/maxPoints)*100;
        //Beräkna betyg
        if(meanPercentage >= 90){
            System.out.println("Medelpoängen var: " + meanPercentage + ", vilket motsvarar MVG!");
        }else if(meanPercentage >= 70){
            System.out.println("Medelpoängen var: " + meanPercentage + ", vilket motsvarar VG!");
        }else if(meanPercentage >= 50){
            System.out.println("Medelpoängen var: " + meanPercentage + ", vilket motsvarar G!");
        }else{
            System.out.println("Medelpoängen var: " + meanPercentage + ", vilket motsvarar U!");
        }
    }

Glöm inte att importera scanner-klassen i början av programmet!

import java.util.Scanner;


Övningsuppgift 4

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

}

Lösning

    public static void main (String[] args) {
        // Ange lön-variabler
        int salaryPerHour = 145;
        int salaryOvertime = 240;
        // 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 större än 0 och mindre än 350!");
            // 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;
        }
        // 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. Faktorn 0.8 och 0.75 är resultatet av 20% och 25% avdrag för skatt respektive
            salary = (160 * salaryPerHour) * 0.8 + (overtime * salaryOvertime) * 0.75;
        }
        System.out.println("Lönen efter skatt blev: " + salary);
        
    }

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!