Неожиданное поведение nextLine () в Java - PullRequest
0 голосов
/ 02 октября 2011

Я новичок в Java, nextLine(); не работает один раз, а все остальные.Я в замешательстве :( Я использую Eclipse на тот случай, если вам нужно знать.

    package tuna;
    import java.util.Scanner;

    public class Calculater {
        public static void main (String args []) {
            Scanner uno = new Scanner(System.in);
            System.out.println("How many differant numbers do you want to use? (up to four, minimum two)");
            double two = uno.nextDouble();
            if (two == 2){
                System.out.println("2");
                System.out.println("Enter first number: ");
                double fnum = uno.nextDouble();
                System.out.println(fnum);
                System.out.println("Enter second number: ");
                double snum = uno.nextDouble();
                System.out.println(snum);
                System.out.println("Enter number operation (Say plus, minus, divide or times. No capitials please)");
                String op = uno.nextLine();

. Выше uno.nextLine не работает. Почему?

if (op.equals("plus")){
                        System.out.println(fnum + snum);

                    }


                }
                double three;
                double four;



            }



    }

РЕДАКТИРОВАТЬ: ЧтоПод словом «это не работает» я имею в виду, что после того, как на выходе напечатано «Операция ввода числа (скажем, плюс, минус, делить или раз. Без прописных букв)», я ничего не могу напечатать. Когда вы запускаетеговорит, сколько цифр вы хотите? Я набираю 2 и ввод. Затем он говорит, введите первый номер. Я говорю 1 и введите. Затем он говорит, введите второй номер. Я говорю 1 и введите. Затем он говорит, что операция с числом.Позволяет вам печатать, даже если там есть nextLine (); если вы добавите еще одну nextLine (), там вы можете набрать, но если вы наберете плюс, ничего не произойдет, где он должен вывести первое число и добавить второе число.

Ответы [ 2 ]

0 голосов
/ 02 октября 2011

Если вы введете:

3.5<enter>
2<enter>
divide<enter>

Тогда uno.nextDouble(); потребляет 3.5 и оставляет

<enter>
2<enter>
divide<enter>

Затем uno.nextDouble(); потребляет <enter>2 и оставляет

<enter>
divide<enter>

Далее uno.nextLine(); просто потребляет <enter>.Вам нужно позвонить uno.nextLine(); снова, чтобы использовать оставшиеся divide<enter>.

0 голосов
/ 02 октября 2011

После того, как вы прочитали, что вы хотите из строки, вам нужно вызвать nextLine (), чтобы получить оставшуюся строку (даже если она пуста)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...