Structura Condiţională. If

Există momente în cod în care vrem să executăm doar o parte din acesta, în funcţie de anumite condiţii. Putem face acest lucru folosind structura condiţională if.

Aceasta este folosită pentru a verifica dacă o condiţie este adevarată. Sintaxa de bază este următoarea:

if (conditie) {
    instructiuni;
}

Unde:

  • condiţie – valoare booleană
  • instrucţiuni – oricât de multe instrucţiuni executate
  • { } – acoladele ce delimitează blocul de instrucțiuni; sunt opţionale în cazul în care există o singură instrucţiune

Instrucţiunile vor fi executate doar dacă condiţia are valoarea de adevăr true.

public class WhatIf {
    public static void main(String[] args) {
        int people = 20;
        int cats = 30;
        int dogs = 15;
        if (people < cats) {
            System.out.println("Too many cats! The world is doomed!");
        }
        if (people > cats) {
            System.out.println("Not many cats! The world is saved!");
        }
        if (people < dogs) {
            System.out.println("The world is drooled on!");
        }
        if (people > dogs) {
            System.out.println("The world is dry!");
        }
        dogs += 5;
        if (people >= dogs) {
            System.out.println("People are greater than or equal to dogs.");
        }
        if (people <= dogs) {
            System.out.println("People are less than or equal to dogs.");
        }
        if (people == dogs) {
            System.out.println("People are dogs.");
        }
    }
}

Atunci când condiţia de la if este falsă, putem avea alt set de instrucţiuni pe care îl vom executa cu clauza else. Mai mult, se pot face verificări succesive, astfel încât să executăm doar instrucţiunile potrivite pentru o anumită condiţie.

Structura:

if (condiție) {
	// bloc de instrucțiuni
} else if (altaConditie) {
	// bloc de instrucțiuni
} else {
	// bloc de instrucțiuni
        // clauza else simpla nu are conditie, ea se va executa daca
        // conditiile de la clauzele if de deasupra returnează false
}

Mai jos ai 2 exemple în care se foloseşte un if cu un else şi mai multe clauze else if pentru verificarea succesivă condiţiilor. Verificarea se va opri la primul else if care este adevărat. Dacă nicio condiţie nu este adevărată, se vor executa instrucţiunile din clauza else, doar dacă aceasta există.

int k = 24;
if (k < 0) {
    System.out.println("Numarul este negativ.");
} else {
    System.out.println("Numarul este pozitiv.");
}

int weekday = 2;
String result = "";
if (weekday == 1) {
    result = "Luni";
} else if (weekday == 2) {
    result = "Marti";
} else if (weekday == 3) {
     result = "Miercuri";
} else {
     result = "Alta zi";
}
System.out.println("Ziua aleasa este " + result);

Operatorul ternar

Operatorul ternar este o formă prescurtată pentru if-else. Sintaxa foloseşte simbolurile ? şi : astfel:

rezultat = evaluareConditie ? valoare if conditie : valoare else 

Exemple:

int valoareMaxima = x > y ? x : y;
String ziuaSaptamanii = (zi == 7 || zi == 6) ? "Duminica" : "zi de lucru";
Un alt avantaj al operatorului ternar este că poate fi folosit direct în alte expresii:

System.out.println( "Daca ai " + varsta + " ani, " + (varsta < 18 ? "nu ai dreptul sa votezi" : "ai dreptul sa votezi") ); 

Exerciţii

1. Creează un program care cere vârsta de la tastatură. În funcţie de vârsta introdusă, să se afişeze un mesaj dacă utilizatorul este minor sau nu.

Soluţie

Soluţie

import java.util.Scanner;

public class Ifs {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Ce varsta ai?");
        int nr = sc.nextInt();
        if (nr < 18) {
        	System.out.println("Esti minor :(.");
        } else {
        	System.out.println("Esti major!!!");
        }
    }
    
}


2. Creează un program care să afişeze unul din următoarele mesaje pentru o vârstă introdusă de la tastatură. Testează programul cu toate variantele.

  • vârsta e mai mică ca 16, scrie "Nu poti conduce."
  • vârsta e mai mică ca 18, scrie "Nu poti vota."
  • vârsta e mai mică ca 25, scrie "Nu poti inchiria masini."
  • vârsta e 25 sau mai mare, scrie "Poti sa faci orice este legal."

Soluţie

Soluţie

import java.util.Scanner;

public class Ifs {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Ce varsta ai?");
        int varsta = sc.nextInt();
        if (varsta < 16) {
        	System.out.println("Nu poti conduce.");
        } else if (varsta < 18) {
        	System.out.println("Nu poti vota.");
        } else if (varsta < 25) {
        	System.out.println("Nu poti închiria masini.");
        } else {
        	System.out.println("Poti sa faci orice este legal.");
        }
    }
    
}


3. Introdu un număr între 1 şi 7 de la tastatură. Afişează denumirea zilei corespuzătoare numelui introdus (1 – Luni, 2 – Marti, etc.)

Soluţie 1

Soluţie 1

import java.util.Scanner;

public class Ifs {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("In ce zi te aflii?");
        int zi = sc.nextInt();
        if (zi == 1) {
        	System.out.println("Luni");
        } else if (zi == 2) {
        	System.out.println("Marti");
        } else if (zi == 3) {
        	System.out.println("Miercuri");
        } else if (zi == 4) {
        	System.out.println("Joi");
        } else if (zi == 5) {
        	System.out.println("Vineri");
        } else if (zi == 6) {
        	System.out.println("Sambata");
        } else if (zi == 7) {
        	System.out.println("Duminica");
        } else {
        	System.out.println("Nicio zi de care trebuie");
        }
    }
    
}


Soluţie2

Soluţie2

import java.util.Scanner;

public class Ifs {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("In ce zi te aflii?");
        int zi = sc.nextInt();
        String rezultat;
        if (zi == 1) {
            rezultat = "Luni";
        } else if (zi == 2) {
        	rezultat = "Marti";
        } else if (zi == 3) {
        	rezultat = "Miercuri";
        } else if (zi == 4) {
        	rezultat = "Joi";
        } else if (zi == 5) {
        	rezultat = "Vineri";
        } else if (zi == 6) {
        	rezultat = "Sambata";
        } else if (zi == 7) {
        	rezultat = "Duminica";
        } else {
        	rezultat = "Nicio zi";
        }
        System.out.println("Ai ales: " + rezultat);
    }
    
}


4. Se citesc 2 şiruri de caractere de la tastatură. Să se compare şi să se afişeze dacă sunt egale sau nu. Atenţie, comparaţia între şiruri de caractere NU se face cu operatorul ==!

Soluţie

Soluţie

import java.util.Scanner;

public class Ifs {

    public static void main(String[] args) {
        String sir1 = citesteSir();
        String sir2 = citesteSir();
        comparaSirurile(sir1, sir2);
    }
    
    public static String citesteSir() {
        Scanner sc = new Scanner(System.in);
        String sir = sc.next();
        return sir;
    }
    
    public static void comparaSirurile(String s1, String s2) {
        if (s1.equals(s2)) {
        	System.out.println("Sirurile sunt aceleasi");
        } else {
            System.out.println("Ai introdus siruri diferite!");
        }
    }
    
}


5. Scrie câte o metodă pentru rezolvarea fiecărei subprobleme din enunţurile de mai sus: citirea vârstei, verificarea vârstei, citirea zilei, citirea unui şir de caractere, etc.

Resurse

You could leave a comment if you were logged in.