Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

7. diel - Podmienky (vetvenie) v Jave

V predchádzajúcom cvičení, Riešené úlohy k 5.-6. lekcii Javy, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

Aby sme si niečo naprogramovali, potrebujeme nejako reagovať na rôzne situácie. Môže to byť napríklad hodnota zadaná používateľom, podľa ktorej budeme chcieť meniť ďalší beh programu. Hovoríme, že sa program vetví a k vetveniu používame podmienky. Tým sa budeme venovať v celom dnešnom Java tutoriále. Vytvoríme program na výpočet odmocniny a vylepšíme našu kalkulačku.

Podmienky - if

Podmienky zapisujeme pomocou kľúčového slova if, za ktorým nasleduje logický výraz. Ak je výraz pravdivý, vykoná sa nasledujúci príkaz. Ak nie, nasledujúci príkaz sa preskočí a pokračuje sa až pod ním. Vyskúšajme si to:

Klikni pre editáciu
  • if (15 > 5)
        System.out.println("True");
    System.out.println("The program continues here");
    
    • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

      Pokiaľ tvoja aplikácia vyžaduje vstup od užívateľa, musíš použiť Scanner a premenná sa musí volať buď scanner alebo sc.

    Výstup programu:

    Konzolová aplikácia
    True
    The program continues here

    Pokiaľ podmienka platí (tu práve áno), vykoná sa príkaz vypisujúci do konzoly text True. V oboch prípadoch program pokračuje ďalej. Súčasťou výrazu samozrejme môže byť aj premenná:

    Klikni pre editáciu
    • Scanner scanner = new Scanner(System.in, "Windows-1250");
      System.out.println("Enter a number");
      int number = Integer.parseInt(scanner.nextLine());
      if (number > 5)
          System.out.println("The number you entered is greater than 5!");
      System.out.println("Thanks for the input!");
      
      • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

        Pokiaľ tvoja aplikácia vyžaduje vstup od užívateľa, musíš použiť Scanner a premenná sa musí volať buď scanner alebo sc.

      Relačné operátory

      Ukážme si teraz relačné operátory, ktoré môžeme vo výrazoch používať:

      Operátor C-like zápis
      Rovnosť ==
      Je ostro väčší >
      Je ostro menší <
      Je väčší alebo rovný >=
      Je menší alebo rovný <=
      Nerovnosť !=
      Všeobecná negácia !

      Rovnosť zapisujeme dvoma == preto, aby sa to neplietlo s bežným priradením do premennej, ktoré sa robí len jedným =. Pokiaľ chceme nejaký výraz znegovať, napíšeme ho do zátvorky a pred neho dáme výkričník.

      Blok príkazov

      Keď budeme chcieť vykonať viac ako len jeden príkaz, musíme príkazy vložiť do bloku zo zložených zátvoriek:

      Klikni pre editáciu
      • Scanner scanner = new Scanner(System.in, "Windows-1250");
        System.out.println("Enter some number and I'll calculate a square root:");
        int number = Integer.parseInt(scanner.nextLine());
        if (number >= 0) {
            System.out.println("The number you entered is greater than 0, so I can calculate it!");
            double root = Math.sqrt(number);
            System.out.println("The square root of " + number + " is " + root);
        }
        System.out.println("Thanks for the input");
        
        • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

          Pokiaľ tvoja aplikácia vyžaduje vstup od užívateľa, musíš použiť Scanner a premenná sa musí volať buď scanner alebo sc.

        Po spustení programu a zadaní hodnôt bude vyzerať výstup takto:

        Konzolová aplikácia
        Enter some number and I'll calculate a square root:
        144
        The number you entered is greater than 0, so I can calculate it!
        The square root of 144 is 12.0
        Thanks for the input

        Nezabudnite si naimportovať java.util.Scanner, aby program poznal triedu Scanner.

        Často môžete vidieť použitie bloku aj v prípade, že je pod podmienkou len jeden príkaz, väčšinou je to totiž prehľadnejšie.

        Program načíta od užívateľa číslo a pokiaľ je väčšie ako 0, vypočíta z neho druhú odmocninu. Okrem iného sme použili triedu Math, ktorá na sebe obsahuje množstvo užitočných matematických metód, niekedy si ju bližšie predstavíme. Metóda sqrt() vracia hodnotu ako double.

        Vetva else

        Bolo by pekné, keby nám program vynadal v prípade, že zadáme záporné číslo. S doterajšími znalosťami by sme napísali niečo ako:

        Klikni pre editáciu
        • Scanner scanner = new Scanner(System.in, "Windows-1250");
          System.out.println("Enter some number and I'll calculate a square root:");
          int number = Integer.parseInt(scanner.nextLine());
          if (number >= 0) {
              System.out.println("The number you entered is greater than 0, so I can calculate it!");
              double root = Math.sqrt(number);
              System.out.println("The square root of " + number + " is " + root);
          }
          
          if (number < 0) {
              System.out.println("I can't calculate the square root of a negative number!");
          }
          System.out.println("Thanks for the input!");
          
          • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

            Pokiaľ tvoja aplikácia vyžaduje vstup od užívateľa, musíš použiť Scanner a premenná sa musí volať buď scanner alebo sc.

          Kód však môžeme výrazne zjednodušiť pomocou kľúčového slova else, ktoré vykoná nasledujúci príkaz alebo blok príkazov v prípade, že sa podmienka nevykoná:

          Klikni pre editáciu
          • Scanner scanner = new Scanner(System.in, "Windows-1250");
            System.out.println("Enter a number and I'll get its square root:");
            int number = Integer.parseInt(scanner.nextLine());
            if (number >= 0) {
                System.out.println("The number you entered is greater than 0, so I can calculate it!");
                double root = Math.sqrt(number);
                System.out.println("The square root of " + number + " is " + root);
            } else {
                System.out.println("I can't calculate the square root of a negative number!");
            }
            System.out.println("Thanks for the input!");
            
            • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

              Pokiaľ tvoja aplikácia vyžaduje vstup od užívateľa, musíš použiť Scanner a premenná sa musí volať buď scanner alebo sc.

            Kód je oveľa prehľadnejší a nemusíme vymýšľať opačnú podmienku, čo by v prípade zloženej podmienky mohlo byť niekedy veľmi obtiažne. V prípade viacerých príkazov by bol za else opäť blok { }.

            Kľúčové slovo else sa tiež využíva v prípade, keď potrebujeme v príkaze manipulovať s premennou z podmienky a nemôžeme sa na ňu tým pádom potom pýtať znova. Program si sám pamätá, že sa podmienka nesplnila, a prejde do sekcie else. Ukážme si to na príklade.

            Prehodenie hodnôt premennej

            Majme premennú number, kde bude hodnota 0 alebo 1 a od nás sa bude chcieť, aby sme hodnotu prehodili (ak tam je 0, dáme tam 1, ak 1, dáme tam 0). Naivne by sme mohli kód napísať takto:

            Klikni pre editáciu
            • int number = 0; // the variable is initialized with a value of 0
              
              if (number == 0) { // if the value is 0, we change its value to 1
                  number = 1;
              }
              
              if (number == 1) { // if the value is 1, we change its value to 0
                  number = 0;
              }
              
              System.out.println(number);
              
              • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

                Pokiaľ tvoja aplikácia vyžaduje vstup od užívateľa, musíš použiť Scanner a premenná sa musí volať buď scanner alebo sc.

              Nefunguje to, však? Poďme si prejsť, čo bude program robiť. Na začiatku máme v number nulu, prvá podmienka sa určite splní a dosadí do number jednotku. Ale razom sa tak splní aj tá druhá. Čo s tým? Keď podmienky otočíme, budeme mať ten istý problém s jednotkou. Ako z toho von? Áno, použijeme else:

              Klikni pre editáciu
              • int number = 0; // the variable is initialized with a value of 0
                
                if (number == 0) { // if the value is 0, we change its value to 1
                    number = 1;
                } else { // if the value is 1, we change its value to 0
                    number = 0;
                }
                
                System.out.println(number);
                
                • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

                  Pokiaľ tvoja aplikácia vyžaduje vstup od užívateľa, musíš použiť Scanner a premenná sa musí volať buď scanner alebo sc.

                Program máte samozrejme opäť v prílohe, skúšajte si vytvárať nejaké podobné, znalosti už k tomu máte :-)

                V budúcej lekcii, Podmienky (vetvenie) druhýkrát - Konštrukcia switch v Jave, sa naučíme skladať podmienky pomocou logických operátorov. Ďalej sa pozrieme na využitie konštrukcie switch.


                 

                Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

                Stiahnuť

                Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

                Stiahnuté 39x (2.31 kB)
                Aplikácia je vrátane zdrojových kódov v jazyku Java

                 

                Ako sa ti páči článok?
                Pred uložením hodnotenia, popíš prosím autorovi, čo je zleZnakov 0 z 50-500
                Predchádzajúci článok
                Riešené úlohy k 5.-6. lekcii Javy
                Všetky články v sekcii
                Základné konštrukcie jazyka Java
                Preskočiť článok
                (neodporúčame)
                Podmienky (vetvenie) druhýkrát - Konštrukcia switch v Jave
                Článok pre vás napísal David Hartinger
                Avatar
                Užívateľské hodnotenie:
                120 hlasov
                David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
                Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
                Aktivity