Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 8. diel - Podmienky (vetvenie) druhýkrát - Konštrukcia switch v Jave

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Hynek Dlouhý:2.3.2023 17:44

Nevíte někdo, proč mi konzole vypíše if i když podmínka nebyla dodržena? Jde mi o to, že pokud uživatel nezadá 16, 32, nebo 64, má se vypsat text "Zadejte 16,32, nebo 64.". Nicméně se vypíše i když jedno z těchto čísel bylo zadáno. Díky

public class ultimatepc {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in, "Windows-1250");
                System.out.println("Zadejte rozpočet pro počítač:");
                int rozpocet=Integer.parseInt(sc.nextLine());
                System.out.println("Kolik GB operační paměti?");
                int gb=Integer.parseInt(sc.nextLine());
                int ram=0;

                switch (gb) {   //ceny_ramek
                        case 16:
                            ram=1024;
                        break;
                        case 32:
                            ram=2100;
                        break;
                        case 64:
                            ram=4400;
                        break;
                }
                if ((gb != 16) || (gb != 32) || (gb != 64)){
                    System.out.println("Zadejte 16, 32, nebo 64.");
                } else {
                    System.out.println("Dík"); //smazat
                }
 
Odpovedať
2.3.2023 17:44
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Hynek Dlouhý
DarkCoder:2.3.2023 18:56

Nemůžeš spojovat jednotlivé výrazy pomocí operátoru logického součtu, neboť ti vždy nějaký vyjde pravdivý a výsledek výrazu tak bude vždy pravdivý, proto se vždy provede příkaz if.

Odpovedať
2.3.2023 18:56
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Lukáš
Člen
Avatar
Lukáš:28.8.2023 19:29

Ahoj,
může mě prosím někdo vysvětlit proč tam je tato část kodu co přesně dělá či význam,
zbytek chápu, ale tady fakt tápu....

double vysledek = 0;

 
Odpovedať
28.8.2023 19:29
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Lukáš
DarkCoder:28.8.2023 23:24

Proměnná Výsledek se používá při výpisu výsledků a pro uložení výsledku operace. Je tedy nutné ji deklarovat. Inicializace na 0 je ovšem zbytečná neboť při validní volbě se hodnota proměnné Vysledek přepíše a při volbě mimo požadovaný rozsah se nepoužívá.

Odpovedať
28.8.2023 23:24
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Nina Dvořáková:17.10.2023 0:40

Chybí mi vysvětlení case a default. Nevím, v jakém případě se default použije a jak by to vypadalo, kdybych to použít chtěla. nevím, proč bych to měla chtít použít.

 
Odpovedať
17.10.2023 0:40
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Nina Dvořáková
DarkCoder:17.10.2023 1:51

case je klíčové slovo, které se používá uvnitř příkazu switch k definici možných hodnot, které mohou být porovnávány s hodnotou výrazu ve switch. Slouží k tomu, aby program věděl, co dělat, když hodnota ve výrazu switch odpovídá některé z definovaných hodnot case.

default je klíčové slovo, které se používá uvnitř příkazu switch a slouží k definici bloku kódu, který se provede, pokud žádný z case bloků ve switch neprovádí shodu s hodnotou ve výrazu switch.

Zde pak je struktura příkazu switch:

switch (výraz) {
    case hodnota1:
        // Kód, který se provede, pokud výraz odpovídá hodnota1
        break; // Volitelný příkaz pro ukončení switch
    case hodnota2:
        // Kód, který se provede, pokud výraz odpovídá hodnota2
        break;
    // Další case bloky pro další hodnoty
    default:
        // Kód, který se provede, pokud žádný case nesedí s hodnotou výrazu
}

Větev default použijeme v případě, chceme-li provést něco i když ani jedna z větví case se neprovede. Pokud větev default vynecháme, nic se nestane.

Odpovedať
17.10.2023 1:51
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
DarkCoder:17.10.2023 2:53

Po obsahové i vysvětlující stránce je prezentace konstrukce switch bohužel naprosto nedostačující. Chybí v něm takřka úplně vše. Od detailního popisu toho jak příkaz switch funguje, popisu jeho jednotlivých částí, srovnání s if-else, omezení, použití, praktické příklady, zvláštní případy a další. Některé části jsou rovněž nepřesné a matoucí.

Výukový článek by měl být informativní a praktický zároveň. Měl by poskytovat čtenářům maximální možné informace, aby mohli plně chápat a používat programovou konstrukci switch v praxi.

Odpovedať
17.10.2023 2:53
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Peter Šprencel :16.11.2023 18:24

A zároveň &&
Nebo ||
chcel by som sa spýtať aký je v to rozdiel? A kde by sa daný operátor viac hodil?

 
Odpovedať
16.11.2023 18:24
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Peter Šprencel
DarkCoder:16.11.2023 18:57

Pokud spojujeme výrazy pomocí logického operátoru &&, pak výsledek je TRUE, pokud oba výrazy jsou TRUE.

Pokud spojujeme výrazy pomocí logického operátoru ||, pak výsledek je TRUE, pokud alespoň jeden z vyrazů je TRUE.

Použití záleží a situaci a je treba logicky uvažovat.

Příklad: Chceš koupit rohlíky v samoobsluze. Rohlíky můžeš koupit tehdy, pokud je mají, máš dostatek peněz, je samoobsluha otevřena.

Zde se spojují 3 výrazy a vždy musí být použito &&, neboť nákupu nejsi schopen když aspoň jeden výraz není splněn.

Priklad 2: Máš čtverec jehož souřadnice vrcholů znáš. Chceš určit zda bod leží mimo čtverec. K tomu ti postačí určit zda pozice je mimo horizontální rozsah nebo mimo vertikální rozsah. Jelikož stačí aby jedna podmínka byla pravdivá, použiješ ||.

Nastuduj si i co je to Demorganovo pravidlo. Jak se mění logické operatory ve výrazu s doplněním negací.

Odpovedať
16.11.2023 18:57
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovedá na DarkCoder
Peter Šprencel :21.11.2023 19:02

vďaka za jednoduché vysvetlenie. aj keď ho o pár dní zabudnem :D ale viem kde to hľadať.

 
Odpovedať
21.11.2023 19:02
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!