Keresés

Új hozzászólás Aktív témák

  • Fáraó

    őstag

    Üdv!
    Konzolos menüt szeretnék készíteni, hülyegyerek biztosat, ami nem akad ki, ha nem int-et kap válaszként. Eddig az Angster Erzsébetes extra csomagot használtam, de szeretném nélküle megoldani, scanner-el. Egy ideje gondolkodok rajta, de nem jutok előbbre ,a netes keresés eredményeként a hasNextInt-ig jutottam el, de annak az else ágát nem tudom rendesen használni a megoldásra, mert pl. itt működik:

    public static void main(String[] arg) {
    Scanner in = new Scanner(System.in);
    System.out.println("How many are invading?");

    if (in.hasNextInt()) {
    int a = in.nextInt();
    System.out.println(a);
    } else {
    System.out.println("Sorry, couldn't understand you!");
    }
    }

    de én a saját kódomban nem tudom felhasználni:
    private static Scanner inputScanner = new Scanner(System.in);

    public static void main(String[] args) {
    System.out.println(" *** Welcome to the board game ! *** ");
    selectInMainMenu();
    }

    private static void selectInMainMenu() {
    int mainMenuChoice=0;
    do {
    showMainMenu();
    if (inputScanner.hasNextInt()) {
    mainMenuChoice = inputScanner.nextInt();
    } else {
    System.out.println("Wrong input! Please, select 1, 2 or 3! ");
    break;
    }
    } while (mainMenuChoice < 1 || mainMenuChoice > 3);
    switch (mainMenuChoice) {
    case 1:
    showHelp();
    selectInMainMenu();
    break;
    case 2:
    startAGame();
    selectInMainMenu();
    break;
    case 3:
    System.out.println("\nGoodbye!");
    break;
    }
    }

    private static void showMainMenu() {
    System.out.println("1 - Game info");
    System.out.println("2 - Start a game");
    System.out.println("3 - Exit");
    }

    private static void showHelp() {
    System.out.println("\nShowing help!\n");
    }

    private static void startAGame() {
    System.out.println("\nPlaying a game!\n");
    }

  • Fáraó

    őstag

    Üdv!

    Bár a megoldás működik, nem tartom elegánsnak. Ha esetleg valaki tudna egy szebb megoldást, megköszönném.

    Gyakorolgatom SE tudásomat és egy táblajátékot írok. 1, 2, 3, 4-el (plusz enter) lehet lépkedni a négy irányba, a lépés előtt vizsgálom a lehetséges lépésirányokat, amit beleteszek egy négy elemű boolean tömbbe (minden lépés előtt frissülő statikus tömb). A tömb alapján listázódnak ki a lehetséges lépésirányok. A kiíráshoz használom a tömb indexeit. A feldobott lehetséges irányokból az int movementDirection adja meg egy másik metódusnak a lépés irányát. Viszont arra is kell figyelnem, hogy csak 0-3 közötti szám legyen értéke, nehogy tömbindexelési kivételbe fussak (kivételkezelés alapfokon). A kódom:

    public static int listPossibleSteps() {
    //indexes of possibleSteps: 0: left; 1: up; 2: right; 3: down
    int movementDirection = 0;

    System.out.println("");
    for (int i = 0; i < possibleSteps.length; i++) {
    if (possibleSteps[i]) {
    System.out.print((i + 1) + " - ");
    switch (i) {
    case 0:
    System.out.print("Move left\n");
    break;
    case 1:
    System.out.print("Move up\n");
    break;
    case 2:
    System.out.print("Move right\n");
    break;
    case 3:
    System.out.print("Move down\n");
    break;
    }
    }
    }
    do {
    do {
    movementDirection = extra.Console.readInt("Please select: ");
    } while (movementDirection < 1 || movementDirection > 4);
    movementDirection--;
    } while (!possibleSteps[movementDirection]);
    return movementDirection;
    }

    Működik, de ez a két do-while a végén nekem elég szar megoldásnak tűnik. Esetleg lenne rá szebb kód?

    Köszi!

  • Fáraó

    őstag

    Üdv!

    Tuti rossz helyre írok, de nem találtam más alkalmasabb topicot, ez legalább szakmai topic. A kérdésem:

    Ismeri valaki a Brainhub által szervezett Java oktatást? Érdemes elkezdeni, lehet rá jövőt alapozni, ad(hat) megfelelő tudást?

    Köszönöm a türelmeteket!

Új hozzászólás Aktív témák

Hirdetés