Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 4. diel - Hracia kocka v Jave - Zapuzdrenie a konštruktor

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
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Branislav Budoš:21.1.2020 10:16

Pekný deň prajem. Nejde mi do hlavy jedna vec a to:
musí byť vo finálnom programe v triede tento kód? Pretože podla mňa nie. A keď ho vymažem pokusne z triedy tak program pekne zbehne.

public int vratPocetSten() {
    return pocetSten;
    }

Ďakujem za odpoveď.

Avatar
Odpovedá na Branislav Budoš
Petr Štechmüller:21.1.2020 11:47

Není dobré atribut nastavit na public, protože nebudeme chtít, aby nám někdo mohl již u vytvořené kostky měnit počet stěn. Přidáme do třídy tedy metodu vratPocetSten(), která nám vrátí hodnotu atributu pocetSten. Docílili jsme tím v podstatě toho, že je atribut read-only (atribut není viditelný a lze ho pouze číst metodou, změnit ho nelze).

Odpovedať
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Jan Béňa
Člen
Avatar
Jan Béňa:29.1.2020 18:21

Ahoj všem.
Asi bych potřeboval poradit. Snažil jsem se udělat program, který by vygeneroval mezi sebou dvě náhodné čísla a ty pak porovnal mezi sebou. Pokud by jedno bylo větší přičetl by +1 do proměnné třeba a v opačném případě do b. při rovnosti nic. Snažil jsem se to naprogramovat pomocí OOP a vše funguje jak jsem popsal. Ovšem když to dám do cyklu tak to vygeneruje jednou náhodně a pak to vezme první náhodné generování. Nějak nemůžu docílit toho, aby to vždycky vygenerovalo nové čísla do cyklu tak že mám vždy jen tři výsledky.(1:0,0:1 nebo 0:0). Myslím že pokud jsem došel sem, měl bych to zvládnout, akorát už se s tím lámu týden a pořád nic. Mohl by mi když tak nějaký zkušený borec dát nějaký tip aby mě nasměroval. Děkuji mockrát.

Avatar
Odpovedá na Jan Béňa
Matúš Olejník:29.1.2020 20:14

Ahoj, prihoď sem aj tvoj kód, so vstupom a požadovaným výstupom. Najlepšie by však bolo keby vytvoríš nové vlákno vo fóre pre Javu kde môžme viacej písať. Keď už sa s tým se#ieš týždeň nech to dokončíš :D

Odpovedať
/* I am not sure why this works but it fixes the problem */
Avatar
Jan Béňa
Člen
Avatar
Odpovedá na Matúš Olejník
Jan Béňa:29.1.2020 20:17

Ok zkusím vytvořit vlákno na fóru.

Avatar
Gemy
Člen
Avatar
Gemy:25.3.2020 15:58

Jak dokáže stroj generovat náhodná čísla? Odkud je matematicky bere?

Odpovedať
Člověk stvořil logiku, a proto jedná v afektu.
Avatar
Alesh
Tvůrce
Avatar
Odpovedá na Gemy
Alesh:25.3.2020 18:45

Nejedná se o náhodná čísla, ale o pseudonáhodná, protože jak správně tušíš, stroj nemůže "vymyslet" náhodné číslo. Laicky vysvětleno to funguje tak, že se vezme systémový čas, ten se vynásobí velkým prvočíslem a dále se to upravuje tak, aby vypadlo číslo z požadovaného intervalu.
Odborné vysvětlení najdeš na netu, třeba na Wikipedii, viz Generátor náhodných čísel.

Editované
Avatar
Aleš Fiala
Člen
Avatar
Aleš Fiala:29.6.2020 17:13
Exception in thread "main" java.lang.StackOverflowError
        at tahovyboj.Kostka.<init>(Kostka.java:16)
        at tahovyboj.Kostka.<init>(Kostka.java:16)
        at tahovyboj.Kostka.<init>(Kostka.java:16)
        at tahovyboj.Kostka.<init>(Kostka.java:16)
        at tahovyboj.Kostka.<init>(Kostka.java:16)
        at tahovyboj.Kostka.<init>(Kostka.java:16)
        at tahovyboj.Kostka.<init>(Kostka.java:16)
        at tahovyboj.Kostka.<init>(Kostka.java:16)
C:\Users\Lenovo\AppData\Local\NetBeans\Cache\12.0\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\Lenovo\AppData\Local\NetBeans\Cache\12.0\executor-snippets\run.xml:94: Java returned: 1
BUILD FAILED (total time: 3 seconds)
Editované
Avatar
Aleš Fiala
Člen
Avatar
Odpovedá na Aleš Fiala
Aleš Fiala:29.6.2020 17:26

Jak už tu někdo psal: Už si z toho sypu popel nad hlavu. Stačilo jen dát u druhé třídy Clean and Build. Jak se dá tohle dlouhý smazat? :)

Avatar
Ondra Hájek
Člen
Avatar
Ondra Hájek:22.12.2020 20:47

Ahoj, je tu někdo zkušený kdo by se podíval na moje řešení? Někde jsem okoukal řetězení konstruktorů. Znamená to, že pokud zavolám konstruktor bez argumentu, ten následně zavolá konstruktor druhý a dosadí defaultní hodnotu argumentu? Chápu to správně? Viz kód.
Díky, Ondra

import java.util.Random;

public class Kostka {

    private int pocetSten;
    private Random random;

    public Kostka(int pocetSten) {
        this.pocetSten = pocetSten;
        this.random = new Random();
    }

    public Kostka() {
        this(6);
    }

    public int getPocetSten() {
        return this.pocetSten;
    }

    @Override
    public String toString() {
        return "Kostka{" +
                "pocetSten=" + this.pocetSten +
                '}';
    }

    public int randomNumber() {
        return random.nextInt(this.pocetSten) + 1;
    }
}
Posledné komentáre sú na spodnej časti poslednej stránky.
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.

Zobrazené 10 správy z 138.