Java中出现意外的nextLine()行为

时间:2011-10-02 18:05:07

标签: java input

我是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;



            }



    }

编辑:我的意思是'它不起作用'是在输入数字操作(Say plus,minus,divide or times。没有首饰请)“打印在输出中后,我无法输入任何内容当你运行它说你想要多少个数字?我输入2然后输入。然后它说输入第一个数字。我说1然后进入。然后它说输入第二个数字。我说1然后进入。然后它说什么号码操作。即使有nextLine(),它也不会让你输入;在那里。如果你添加另一个nextLine();在那里你可以打字,但如果你输入加号,没有任何反应,它应该打印第一个数字加上第二个数字。

2 个答案:

答案 0 :(得分:0)

在你从一行读完你想要的东西后,你需要调用nextLine()来获取剩下的行(即使它是空的)

答案 1 :(得分:0)

如果您输入:

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>