Avatar
Kafac
Člen
Avatar
Kafac:

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. ledna 11:40
"Lepší, než předpovídat budoucnost, je vytvořit ji." Bill Gates
Avatar
Jozef
Člen
Avatar
Odpovídá na Kafac
Jozef:

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. ledna 12:16
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 13. ledna 12:13
I'm not afraid to die on a treadmill
Avatar
Jozef
Člen
Avatar
Odpovídá na Jozef
Jozef:

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

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

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

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

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. ledna 19:29
"Lepší, než předpovídat budoucnost, je vytvořit ji." Bill Gates
Avatar
B42P6
Člen
Avatar
Odpovídá na Kafac
B42P6:

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. ledna 21:40
Nahoru Odpovědět 13. ledna 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.