CodeGym /Kursy /Składnia Java /Operatory warunkowe

Operatory warunkowe

Składnia Java
Poziom 4 , Lekcja 4
Dostępny

– Cześć, Amigo. Dzisiaj porozmawiamy o instrukcjach if/else.

– Marny byłby użytek z programu, który nie odpowiadałby na zmieniające się warunki zewnętrzne. Program musi wiedzieć, jak reagować na okoliczności oraz jakie działanie podjąć w zależności od ich rodzaju. W Javie w tym celu stosuje się „instrukcje if/else” – to specjalna konstrukcja, która umożliwia wykonywanie różnych bloków kodu, jeśli zostanie spełniony dany warunek.

– Składa się ona z trzech części: 'warunek', 'komenda 1' i 'komenda 2'. Jeśli warunek jest spełniony, wtedy uruchamia się 'komenda 1', a jeśli nie, uruchamia się 'komenda 2'. Te komendy nigdy nie uruchamiają się jednocześnie. Instrukcja wygląda mniej więcej tak:"

Kod dla instrukcji if/else
if (warunek)
    komenda_1;
else
    komenda_2;

– Ależ ekscytujące! Myślę, że ta instrukcja sprawi, że programowanie będzie jeszcze ciekawsze!

– Jasne. Oto kilka przykładów dla Ciebie:

Kod Wyjaśnienie
1
if (a < b)
    System.out.println("A jest mniejsze niż B");
else
    System.out.println("B jest mniejsze niż A");
Jeśli a jest mniejsze niż b, zostanie uruchomiona pierwsza komenda. W innym przypadku uruchomi się druga komenda. Komendy nigdy nie uruchamiają się jednocześnie.
2
if (a < b)
{ System.out.println("A jest mniejsze niż B"); System.out.println("B jest większe niż A"); }
else
{ System.out.println("B jest mniejsze niż A"); System.out.println("A jest większe niż B"); }
Możesz zastąpić jedną komendę blokiem kodu. Reszta jest taka sama.
3
if (a < b)
{ a = 0; }
else
{ }
Możesz pominąć blok else, jeśli jest pusty.
Te trzy przykłady są równoważne.
Możesz pominąć nawiasy klamrowe, jeśli potrzebujesz tylko wykonać jedną komendę. Jeśli natomiast masz więcej niż jedną komendę, musisz użyć tych nawiasów.
4
if (a < b)
{ a = 0; }
5
if (a < b)
    a = 0;

– Przy okazji – Diego prosił, żeby przekazać Ci kilka ćwiczeń:

Komentarze (29)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Anonymous #11566258 Poziom 7, Warsaw, Poland
22 września 2024
Dlaczego dostajemy zadania w których wykorzystywane są funkcje, które wcześniej nie zostały opisane? Pory Roku na Terze w rozwiązaniu jest użyte: switch case brake NIE BYŁO TEGO OPISANEGO WCZEŚNIEJ!!! jak mam rozwiązać zadanie wykorzystujące wiedzę, której wcześniej nie otrzymałem?
doktor Ksh Poziom 9, Polska, Poland
22 marca 2023
trudne w huj
Loginus Lagonow Poziom 9, Poland, Poland
18 listopada 2022
W zadaniu "Dzien tygodnia" brak polskiej instrukcji/podpowiedzi dla przypadku gdy dzien tygodnoa jest z poza zakresu .
Loginus Lagonow Poziom 9, Poland, Poland
18 listopada 2022
zadanie "Pory roku na terze" zrobilem nie używajac ani jednego "IF" 😃
Grzeshu Poziom 9, Świdnica, Poland
13 października 2022
W zadaniu "Liczby dodatnie i ujemne" może nie być oczywiste jedno z poleceń "Program musi wyświetlać liczbę na ekranie" po kilku próbach doszedłem do rozwiązania i program musi wyświetlać tylko i wyłącznie wynik a nie liczbę, która jest wprowadzana
Molo Poziom 41, Jacksonville, Dania
18 sierpnia 2022
w wikikids lepszy opis zadania znalazłem, zawarty w "2 linijkach" niż tutaj to lanie wody i zaciemnianie zadania i taki if się urodził :] ((rok % 4) == 0 && ((rok % 100) != 0 || (rok % 400) == 0))
Gall Anonim #10897794 Poziom 18, Kielce, Poland
31 stycznia 2022
Jeśli ktoś pisze, że program ma wypisać tekst na ekranie (11 jest bliżej 10) to ja zrozumiałem, że wynik na konsoli musi być właśnie taki czyli: 11 jest bliżej 10 - (zamiast 11 może być inna z dwóch liczb - t.j. ta która jest bliżej 10) a potem - gdy zadanie jest niezaliczone to się okazuje że chodzi o samą liczbę (która jest tekstem) lub jak kto woli tekst (która jest liczbą) No jak mawiali Rosjanie biez wodki nie razbieriosz
8 sierpnia 2022
Metoda powinna wyświetlać argument, który znajduje się najbliżej 10. - wyraźnie jest napisane co ma zwracać metoda.....
Maciej Bugała Poziom 4, Poland
26 września 2021
Byłoby miło gdybyście przed zadaniami z rozwiazaniami używającymi znaków "?" ":" wyjaśnili jak ich używać. Bez tej wiedzy zadanie bliżej 10 jest niesamowicie nie jasne w wymyśleniu rozwiązania, bez wiedzy o języku niektóre zadania naprawdę są do niczego.
Mateusz Sobilo Poziom 8, Poland, Poland
31 października 2021
Przecież zadanie nie wymaga używania instrukcji trójargumentowej, jest to najkrótsze rozwiązanie ale da się zrobić to zadanie z dotychczasową wiedzą
Aleksandra Poziom 11, Poland, Poland
28 października 2022
I co wnosi Twój komentarz, skoro nie objaśnia jak to zrobić z dotychczasową wiedzą? Skoro da się to zrobić z dotychczasową wiedzą, to i w oparciu o nią, a nie o niezrozumiały zapis powinno być gotowe rozwiązanie. Ten kurs już któryś raz podaje w rozwiązaniach czegoś, czego wcześniej nie ojaśnił.
Kuba Poziom 6, Węgrów, Poland
22 lipca 2021
Mogę zapisać to w taki sposób czy trzeba &&?

if(50<a<100)
Arek Kowalski Poziom 11, Warsaw, Poland
26 września 2021
Z &&
Joanna Poziom 9
8 stycznia 2021
Czy ktos moze mi wytlumaczyc Przejście przez ulicę na oślep?
Kubańczyk92 Poziom 35, Wroclaw, Poland
16 marca 2022
Ja rozpisałem to sobie w taki sposób: Minuty dla zielonego: 0-3 10-13 20-23 30-33 40-43 50-53 5-8 15-18 25-28 35-38 45-48 55-58 minuty dla żółtego: 3-4 8-9 13-14 18-19 23-24 28-29 33-34 38-39 43-44 48-49 58-59 minuty dla czerwonego: 4-5 9-10 14-15 19-20 24-25 29-30 34-35 39-40 44-45 49-50 59-60 po takim rozpisaniu zacząłem zauważać pewne zależności i że można tu użyć %modulo w warunkach if: dla zielonego: a % 10 == 0 wieksze badz rowne a % 10 == 3 mniejsze a % 10 == 5 wieksze badz rowne a % 10 == 8 mniejsze dla żółtego: a % 10 == 3 wieksze badz rowne a % 10 == 4 mniejsze a % 10 == 8 wieksze badz rowne a % 10 == 9 mniejsze dla czerwonego: a % 10 == 4 wieksze badz rowne a % 10 == 5 mniejsze a % 10 == 9 wieksze badz rowne a % 10 == 0 mniejsze(ten warunek akurat nie jest potrzebny bo nie bedzie ujemnych godzin oraz pokrywa się to z pierwszym warunkiem z zielonego) po takim rozpisaniu rozpisałem to w takich IFach. Polecam spróbować najpierw samemu a dopiero później ew wspomagać się poniższym:

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        double a = Double.parseDouble(br.readLine());

        if ((a % 10.0 >= 0.0 && a % 10.0 < 3.0) || (a % 10.0 >= 5.0 && a % 10.0 < 8.0))
            System.out.println("zielone");
        else if ((a % 10.0 >= 3.0 && a % 10.0 < 4.0) || (a % 10.0 >= 8.0 && a % 10.0 < 9.0))
            System.out.println("żółte");
        else if ((a % 10.0 >= 4.0 && a % 10.0 < 5.0) || (a % 10.0 >= 9.0))
           System.out.println("czerwone");
    }
}
Aleksander Poziom 5, Warsaw, Poland
1 czerwca 2022
A nie prościej z resztą z dzielenia przez 5?

        if (t % 5 < 3)
            System.out.println("zielone");
        else if (t % 5 < 4)
            System.out.println("żółte");
        else
            System.out.println("czerwone");
Kubańczyk92 Poziom 35, Wroclaw, Poland
3 czerwca 2022
Jeżeli dziala to pewnie :)
Molo Poziom 41, Jacksonville, Dania
19 sierpnia 2022
również działa :]

             if((t % 5) >= 0 && (t % 5) < 3) 
                  System.out.println("zielone");
  
       else if((t % 5) >= 3 && (t % 5) < 4)  
                  System.out.println("żółte");
  
       else if((t % 3) > 0 && (t % 3) < 2)  
                  System.out.println("czerwone");
 }
Norbert Poziom 41
4 lutego 2023
Jest wiele możliwości na rozwiazanie tego zadania 😁tym bardziej, że w zadaniu nie kazali uwzględnić wartości ujemnych

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        double t = Double.parseDouble(reader.readLine());

        if(t % 5.0 < 3.0){
            System.out.println("zielone");
        } else if((t % 5.0 >= 3.0) && (t % 5.0 < 4.0)){
            System.out.println("żółte");
        } else {
            System.out.println("czerwone");
        }