if-satsen

Detta är en så kallad villkorssats som gör att man, beroende på värde av ett logiskt (dvs typ boolean) uttryck, kan göra olika saker.

Exempel:

  1. Antag att vi vill skriva ut ordet "Positivt" om variabeln x är större än noll. Vi kan då skriva
    if (x > 0) { System.out.println("Positivt"); } Indragningen av utskriftssatsen kallas för indentering. Den påverkar inte funktionen men är viktig för programmets läsbarhet.

    Utskriften kommer endast ske om villkoret är sant dvs om x är större än 0.

  2. Om man vill skriva "Positivt" om x är större än 0 annars "Icke positivt"
    if (x > 0) { System.out.println("Positivt"); } else { System.out.println("Icke positivt"); }

Allmänt utseende

Satsen finns således i två varianter:
if (villkor) { en eller flera satser } och if (villkor) { en eller flera satser } else { en eller flera satser }

Varianternas funktion kan åskådliggöras med figurerna:

bild respektive bild
Villkoret i if-satsen skall vara ett uttryck av logisk typ dvs boolean. Se minilektion om logiska uttryck.

Ofta vill man testa flera olika alternativ. Antag till exempel att vi vill ha texterna "negativt", "noll" eller "positivt" utskrivna beroende på värdet av x. Koden för detta kan skrivas så här:

if (x < 0) { System.out.println("negativt"); } else { if (x == 0) { System.out.println("noll"); } else { System.out.println("positivt"); } }

Det här är dock så vanlig situation så att man föredrar att skriva den så här:

if (x<0) { System.out.println("negativt"); } else if (x == 0) { System.out.println("noll"); } else { System.out.println("positivt"); }
Det blir tydligare att man har tre "jämbördiga" alternativ. Man utnyttjar här att man inte behöver sätta ut klamrarna om grenen (else-grenen i detta fall) består av en enda sats (en if-sats i detta fall).

Observera att denna kod är ekvivalent med koden högre upp - det är bara en skillnad i layout!

Denna layout går naturligtvis att bygga vidare med fler fall. Exempel:

System.out.print("Talet x är "); if (x < =-100) { System.out.println("mycket negativt"); } else if (x<0) { System.out.println("negativt"); } else if (x == 0) { System.out.println("noll"); } else if (x<100){ System.out.println("positivt"); } else { System.out.println("mycket positivt") }

Följande är ett annat sätt att producera samma utskrift:

System.out.print("Talet x är "); if (x <= -100 || x >= 100) { System.out.print("mycket "); } if (x<0) { System.out.println("negativt"); } else if (x == 0) { System.out.println("noll"); } else { System.out.println("positivt"); }

Övningar

  1. Skriv de satser som skriver ut den största av tre variabler x, y och z.
  2. Skriv de satser som gör att de tre variablerna x, y och z skrivs ut i storleksordning.

Valid CSS!