Java do while és switch menu probláma

Címkék
Java do while és switch menu probláma
2015-12-28T13:53:07+01:00
2015-12-28T14:51:04+01:00
2022-08-09T22:30:33+02:00
Avioder
Olyan problémám lenne , hogy menü szerkezetet szeretnék do while és switch segítségével, de valami miatt amit nem veszek észre a program megcsúszik, valamit rosszol csináltam és nem igazán van ötletem, hogy lenne jó(Ez egy legyen ön is milliomos program lenne karakteresen).

Output:
Kérem adja meg a nevét
Üdvözöljük kedves a játékunkba 15 kérdesre kell válaszolni és nyert

Melyik tancrol kapta cimet a Rudolf Peter f�szereplesevel kesz�lt film?
A rock and roll
B rumba
C tango
D cha-cha-cha

F Felez
G Közönség

Kód:

public static void main(String[] args) throws UnsupportedEncodingException { Scanner eyes = new Scanner(System.in); Kerdes k = new Kerdes(); int index; String megadott; boolean jatek = true; boolean menu = true; int menu_megad; do { System.out.println("\n1. Új játék\n2. Ranglista\n\n3. Kilépés"); menu_megad = eyes.nextInt(); Ido ido = new Ido(); switch (menu_megad) { case 1: do { int szint = 1; index = (int) (Math.random() * 5000); System.out.println("Kérem adja meg a nevét\n\n"); String nev=eyes.nextLine(); System.out.println("Üdvözöljük kedves "+nev + "a játékunkba 15 kérdesre kell válaszolni és nyert"); System.out.println(""); do { k.kiír(index); System.out.println("\nF Felez\nG Közönség\n"); megadott = eyes.nextLine().toUpperCase(); } while (!(megadott.equals("A") || megadott.equals("B") || megadott.equals("C") || megadott.equals("D") || megadott.equals("F") || megadott.equals("G"))); switch (megadott) { case "A": case "B": case "C": case "D": jatek = k.Ellenör(index, megadott); break; case "F": { k.Felez(index); String megadott2 = eyes.nextLine(); jatek = k.Ellenör(index, megadott2.toUpperCase()); break; } case "G": { k.Kozonseg(index); String megadott2 = eyes.nextLine(); jatek = k.Ellenör(index, megadott2.toUpperCase()); break; } } if (jatek == true) { System.out.println("Helyes válasz"); szint++; } else if (jatek == false) { System.err.println("Rossz válasz"); Ranglista r = new Ranglista(); r.Hozzaad(nev, szint, ido.eredeményido()); } } while (jatek == true); break; case 2: Ranglista rang = new Ranglista(); rang.Kiír(); break; case 3: menu = false; break; default: System.err.println("Hiba Menu"); break; } } while (menu == true); }
Mutasd a teljes hozzászólást!
Csatolt állomány
A Scanner becsapós, ugyanis a nextInt akkor kezd olvasni, amikor a sor rendelkezésre áll. Viszont a nextInt csak a számot olvassa be, úgyhogy utána a név megkérdezése kapja az Enter-t, ezért lesz üres a név. Szóval a számot is olvasd nextLine-nal. És utána vagy alakítsd számmá, vagy csak használd szövegként.
Amúgy meg a játék fő do ciklusa magába foglalja a szint inicializálását, és a fent említett névbekérést, ezért indul mindig újra. A helyben deklarált változó miatt (int szint=1;) szükség van a kód blokkra, de a fő do-blokknak az üdvözlés után kéne kezdődnie.
Mutasd a teljes hozzászólást!

Címkék
abcd