Случай по умолчанию выполняется еще до ввода переключателя - PullRequest
0 голосов
/ 19 декабря 2018

Я запускаю программу, и она достигает цикла while с входом, установленным на "" перед циклом.Когда он входит в цикл while, он печатает "Неверный ввод!"и затем он просит ввести input = sc.nextLine ().Зачем?Он даже не вошел в оператор switch-case.Заранее спасибо.

        Scanner sc = new Scanner(System.in);
        int size;
        size = sc.nextInt();
        String[] mem = new String[size];
        int[] mem_index = new int[size];
        String input = "";
        while(!input.equals("quit")) {
        input = sc.nextLine();

        switch(input) {
            case "Z": mem = memAlloc(mem, allocRequest);
                      memPrint(mem, mem_index);
                      allocRequest++;
                      break;
            case "O": System.out.print("Type memory data id: ");
                      delRequest = sc.nextInt();
                      mem = memDel(mem, mem_index, delRequest);
                      memPrint(mem, mem_index);
                      break;
            case "F": mem = memFrag(mem, mem_index);
                      memPrint(mem, mem_index);
                      break;
            case "quit":    break;
            default:  System.out.println("Wrong input!");
                      break;
        }
    }

1 Ответ

0 голосов
/ 19 декабря 2018

Возможно, у вас есть что-то еще в вашем scanner.Попробуйте добавить эту строку:

sc.next();

, прежде чем идти в цикл while или прямо в начале цикла.

...