NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 4 - Hrací kostka v Javě - Zapouzdření, konstruktor a Random

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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ď.

 
Odpovědět
21.1.2020 10:16
Avatar
Odpovídá 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).

Odpovědět
21.1.2020 11:47
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.

 
Odpovědět
29.1.2020 18:21
Avatar
Odpovídá 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

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

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

 
Odpovědět
29.1.2020 20:17
Avatar
Gemy
Člen
Avatar
Gemy:25.3.2020 15:58

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

Odpovědět
25.3.2020 15:58
Člověk stvořil logiku, a proto jedná v afektu.
Avatar
Alesh
Tvůrce
Avatar
Odpovídá 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.

Editováno 25.3.2020 18:46
 
Odpovědět
25.3.2020 18:45
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)
Editováno 1.7.2020 11:12
 
Odpovědět
29.6.2020 17:13
Avatar
Aleš Fiala
Člen
Avatar
Odpovídá 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? :)

 
Odpovědět
29.6.2020 17:26
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;
    }
}
 
Odpovědět
22.12.2020 20:47
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 10 zpráv z 136.