NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Kafac
Člen
Avatar
Kafac:13.1.2016 11:40

Ahoj, musím udělat hru s bojovníky a jelikož si máme vytvořit i nějaké funkce, tak jsem jí chtěl zkusit u jména, ale nevím jak v tom while (pošlu kod), nastavit, že se při nesplnění podmínky v tý funkci bude ten cyklus opakovat, víte to někdo? prosím?

public class Main {

    static void Jmeno()
    {
        Scanner scname = new Scanner(System.in);
        String name=scname.nextLine();
        int namepocet = name.length();
        if(namepocet<7 && namepocet>0)
        {
            System.out.println("Zadal jste správné jméno!");

        }else{
            System.out.println("Vaše jméno je příliš dlouhé");

        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Ahoj, vítej ve hře bojovníci");
        boolean bname = true;
        while(bname)
        {
            bname=false;
            System.out.println("Zadej jméno své postavy: (jméno nesmí být delší než 6 znaků");
                Jmeno();

            }
        }
        }
Odpovědět
13.1.2016 11:40
"Lepší, než předpovídat budoucnost, je vytvořit ji." Bill Gates
Avatar
Jozef
Člen
Avatar
Odpovídá na Kafac
Jozef:13.1.2016 12:13

Prepíš funkciu Jmeno aby vracala pravdivostnu hodnotu, teda z void na boolean.

boolean Jmeno()
    {
        System.out.println("Zadej jméno své postavy: (jméno nesmí být delší než 6 znaků");
        Scanner scname = new Scanner(System.in);
        String name=scname.nextLine();
        int namepocet = name.length();
        if(namepocet<7 && namepocet>0)
        {
            System.out.println("Zadal jste správné jméno!");
             return true;

        }else{
            System.out.println("Vaše jméno je příliš dlouhé");
             return false;
        }
    }

A v main zmen podmienku while cyklu

while(!Jmeno());
Editováno 13.1.2016 12:16
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
13.1.2016 12:13
I'm not afraid to die on a treadmill
Avatar
Jozef
Člen
Avatar
Odpovídá na Jozef
Jozef:13.1.2016 12:19

A výpis:"Zadajte jmeno..." tiež presuň do funkcie Jmeno() na začiatok

Nahoru Odpovědět
13.1.2016 12:19
I'm not afraid to die on a treadmill
Avatar
Kafac
Člen
Avatar
Odpovídá na Jozef
Kafac:13.1.2016 12:48

Super, díky moc, tohle mě nenapadlo :)

Nahoru Odpovědět
13.1.2016 12:48
"Lepší, než předpovídat budoucnost, je vytvořit ji." Bill Gates
Avatar
Kafac
Člen
Avatar
Kafac:13.1.2016 19:29

A ještě bych měl jednu otázku, co mám udělat, když chci tu proměnnou name, používat i v mainu, chci pak třeba právě používat ten format, kde bych ve výstupu používal to hráčovo jméno ještě.

Nahoru Odpovědět
13.1.2016 19:29
"Lepší, než předpovídat budoucnost, je vytvořit ji." Bill Gates
Avatar
B42P6
Člen
Avatar
Odpovídá na Kafac
B42P6:13.1.2016 21:39

Funkcia môže mať len jeden návratový typ (nemôže vraciať aj boolean aj String) Odporúčal by som ti vytvoriť jednu funkciu na načítanie mena. Potom ju v main-e len zavoláš a vráti ti meno ktoré bolo načítane. V nej poriešiš celú logiku načítania. Existuje viac možností (Globálna premena, Objekt ako návratový typ atd.), toto je len jedna z nich. (Podľa mňa najlepšia kedže je logika programu rozdelená do jednotlivých funkcií).

Editováno 13.1.2016 21:40
Nahoru Odpovědět
13.1.2016 21:39
'long long long' is too long for GCC
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 6 zpráv z 6.