Avatar
Benjibs
Člen
Avatar
Benjibs:

V skorších lekciách je:

String premenna;

V tejto zase, že pri deklarácii floatu treba uviesť hocijakú hodnotu.

float premenna = 5

Je to závislé na dátovom type, jeho skupine (primitívny/re­ferenčný), alebo ako vlastne?

Odpovědět 22.6.2013 14:14
1 + 1 = 2
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Benjibs
David Čápka:

Ne, hodnotu je třeba uvést jen proto, aby se dole mohl vypsat výsledek, jinak bys vypisoval proměnnou, která není inicializovaná.

Nahoru Odpovědět 22.6.2013 14:16
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Čápka
Benjibs:

Takže ak tomu chápem správne,
Java vyhubuje, aj keď sa kód využívajúci tú premennú ešte nevykonal (resp. je tu len potenciálna možnost využitia takejto premennej? ) ?

Doteraz som pracoval len s interpretovanými jazykmi, preto si nie som istý :)

Editováno 22.6.2013 14:27
Nahoru Odpovědět 22.6.2013 14:27
1 + 1 = 2
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Benjibs
David Čápka:

Interpreti mají nižší restrikce, Java tam vidí před přiřazením do proměnné vysledek spoustu podmínek a říká si, že kdyby ani jedna z nich neplatila, tak by ve výsledku nic nemuselo být. A potom se vypisuje, což vidí jako problém.

Nahoru Odpovědět  +1 22.6.2013 14:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Kit:

Ten příklad je napsán procedurálně a to Javě moc nesedí. Správně by tam v daném případě

float premenna = 5;

nemělo být vůbec. Místo toho by bylo vhodnější přizpůsobit zbytek ukázkového programu tak, aby zmíněná definice hodnoty nebyla potřebná. Většinou není potřebná ani deklarace.

Nahoru Odpovědět 22.6.2013 14:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Benjibs:

Napísať by som to nevedel, ale šlo by to takto?

Pridať do triedy private metódu.
Metóda by vlastne vykonávala toto:

System.out.printf("Výsledek: %f", vysledek);

Ten 'vysledek' by bol jej argumentom
Bola by volaná v každej vetve Switcha.

  • na konci v klauzule default by bola
System.out.println("Neplatná voľba.")
Editováno 22.6.2013 15:08
Nahoru Odpovědět 22.6.2013 15:08
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Kit:

Víc by se mi líbilo tohle řešení:

    // ...
    int volba = Integer.parseInt(sc.nextLine());
    try {
        System.out.printf("Výsledek: %f", vypocet(a, b, volba));
    } catch (Exception e) {
        System.err.println(e.getMessage());
    }
    System.out.println("Děkuji za použití kalkulačky.");
}

float vypocet(float a, float b, int volba) throws Exception {
    switch (volba) {
        case 1: return a + b;
        case 2: return a - b;
        case 3: return a * b;
        case 4: return a / b;
    }
    throw new Exception("Neplatná volba");
}

EDIT: Koukám, že se ztrácí odsazení

Editováno 22.6.2013 15:23
Nahoru Odpovědět 22.6.2013 15:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

No jasně, ale tohle je jeden z prvních tutoriálů, metody tady ještě používat nemůžeš :)

Nahoru Odpovědět  +1 22.6.2013 17:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

To vím. Reagoval jsem jen na připomínku od Benjibs

Nahoru Odpovědět 22.6.2013 17:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Čápka
Benjibs:
;(

@kit
A placol si mi sem kód, ktorému rozumiem tak na 30% :) Ale aj tak vďaka.

Editováno 22.6.2013 17:50
Nahoru Odpovědět 22.6.2013 17:48
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

To je fajn, už ti zbývá jen 70 % :)

Chtěl jsi privátní metodu, ale bez použití výjimek by to bylo dost nešikovné.

Editováno 22.6.2013 17:57
Nahoru Odpovědět  +2 22.6.2013 17:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Benjibs:

Vlastne mi uniká len zmysel tohto :) :

float vypocet(float a, float b, int volba) throws Exception {

Edit:
A tá privátna metóda je optimálnym riešením?
Žiaľ, 'private' je jedno z mála keywordov ktoré poznám :D

Editováno 22.6.2013 18:02
Nahoru Odpovědět 22.6.2013 18:01
1 + 1 = 2
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Benjibs
David Čápka:

Neboj, dostaneš se k tomu :)

Nahoru Odpovědět  +1 22.6.2013 18:01
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Benjibs
Člen
Avatar
Benjibs:

Ak by som mohol niečo navrhnúť, nestalo by za uváženie pridanie tohto: http://www.itnetwork.cz/…atch-finally
medzi základné tutoriály? :)

Nahoru Odpovědět 22.6.2013 18:09
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

To slovo "private" jsem tam nějak zapomněl napsat. Podle mne je to kromě přehlednosti i řešení, které je optimální. Je tam redukován počet podmínek a odstraněny závislosti mezi nimi.

throws slouží k exportu výjimky mimo metodu. Je to vlastně druhý return s jiným typem návratové hodnoty, který se používá při vzniku chybových stavů.

return se používá při výstupu regulérního výsledku metody, throw při chybovém výstupu. Pokud je "volba" mimo interval 1-4, je to chyba vstupu a proto je výhodné použít výjimku (exception).

Nahoru Odpovědět  +1 22.6.2013 18:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

Je fakt, že výjimky mezi články o práci se soubory nepatří. Pro práci se soubory jsou však nezbytné. Souhlasím tedy s tím, že by výjimky měly být mezi základními tutoriály nebo by jim měla být vyčleněna samostatná kapitola.

Nahoru Odpovědět 22.6.2013 18:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.