扫描仪输入(以前的输入保留在控制台中)

时间:2018-09-11 01:14:45

标签: java input methods switch-statement java.util.scanner

我是Java的新手。

让我在这里描述问题的发生方式。

我将选择5个字符,并且有10个字符可供选择(它们都已被实例化)

为了简短起见,我仅在此处输入了两个字符(切换)。

问题:

  1. 它询问用户,我想选择哪个字符。
  2. 我输入1选择James
  3. 我再次输入 1 以测试它是否可以正常运行。
  4. 应该说“您已经选择了该角色。”,因为我已经选择了James。然后由于使用了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;

0 个答案:

没有答案