Вход сканера (прежний вход остался в консоли) - PullRequest
0 голосов
/ 11 сентября 2018

Я новичок в Java.

Позвольте мне описать, как проблемы возникают здесь.

Я выберу 5 символов, и на выбор будет 10 символов (Все они созданы)уже)

Чтобы сделать его кратким, я поместил здесь только два символа (переключатель).

Проблема:

  1. Он спрашивает пользователя, какой символ яхотел бы выбрать.
  2. Я ввожу 1, чтобы выбрать Джеймса
  3. Я снова ввожу 1 , чтобы проверить, работает ли он нормально.
  4. Должно быть сказано: «Вы уже выбрали этого персонажа ...», потому что я уже выбрал Джеймса.а затем из-за метода searchChosen он возвращает меня к методу charChooseAsk, чтобы я мог выбрать снова.(Очень важно: здесь 1 , который я ввожу для проверки, остается в консоли)
  5. Никаких проблем не возникает, пока я не выберу эти 5 символов
  6. После того, как все сделано, всеВнезапно, он автоматически берет 1 (оставшийся в консоли для тестирования) и снова использует его в качестве входа.и это делает ошибку ArrayIndexOutofBoundsException.

Что мне делать, чтобы этого не случилось?Надеюсь, я описал достаточно хорошо .. Спасибо.

    **public static void searchChoose(Character member)**  {

    for (Character a : chosenMember) {
        if (a == member) {

            System.out.println("**You chosen that character already. Please choose different character.");
            charChooseAsk(chosenMember);

        }
    }

    }

    **public static void charChooseAsk(Character[] memberArr)** {
    int i = 0;
    while (i < memberArr.length) {
        Scanner sc = new Scanner(System.in);    
        while (!sc.hasNextInt()) {
            sc.next();
        }
        select = sc.nextInt();
        switch (select) {

        case 1:

            if (i == 0) {
                memberArr[i] = James;
                i++;
            } else {

                searchChoose(James);
                memberArr[i] = James;
                i++;
            }

            break;
        case 2:
            if (i == 0) {
                memberArr[i] = Alex;
                i++;
            } else {

                searchChoose(Alex);
                memberArr[i] = Alex;
                i++;
            }

            break;
...