Оператор переключения Java запрашивает ввод дважды - PullRequest
1 голос
/ 30 января 2012

Я не понимаю, что происходит с этим оператором switch. Я пытаюсь, чтобы пользователь вводил l меньше и m больше. Если бы они поместили меньше, то он сделал бы вычисления только в случае 'l'. Но похоже, что он запрашивает у пользователя ввод данных из регистра 'l' И переходит к регистру 'm' и запрашивает снова, поэтому пользователь должен вводить l l за меньшее и m m за большее вместо одного раза.

Это проблема с попыткой использования switch или проблема с тем, как я написал код?

        while (choice == console.next().charAt(0));

EDIT: Figured out this was asking for input instead so it kept asking twice each time.

Ответы [ 2 ]

1 голос
/ 30 января 2012
  1. Вы запрашиваете выбор дважды (внутри случая и во время условия).

  2. Еще раз переосмыслите это условие:

    while (choice == console.next().charAt(0))
    

Это не просто запрос ввода еще раз. Это также прерывает цикл, когда пользователь передумал ...

Вы должны удалить консольное чтение из условия while и изменить его на что-то вроде:

while(choice != 'y');
1 голос
/ 30 января 2012

Вы запрашиваете выбор дважды, один раз в операторах case:

        case 'l':   //If it is lower then 499 becomes the upperBound
            upperBound = nextGuess;
            tries++;
            nextGuess = ( (lowerBound + upperBound)/2 );
            System.out.println("Is it " + nextGuess + 
                 "? \n\t Enter y if it is, l if it is less, or m if it is more.");

            // **** here ****
            choice = console.next().charAt(0);

            System.out.println("LOWER");
            break;

и снова в условии while, т. Е.

    while (choice == console.next().charAt(0));

Решение: получить только входные данные раз .

...