Java 为什么我可以为我的操作输入任何内容?

Java 为什么我可以为我的操作输入任何内容?,java,string,calculator,Java,String,Calculator,因此,我试图用java制作一个简单的计算器,但不知道如何获取哪个操作的输入。程序要求输入两个数字,然后要求输入操作员。当我运行它直到达到操作类型时,一切都正常。编译器只是跳过它,甚至不让我为它键入任何内容。有什么线索吗 Scanner keyboard = new Scanner(System.in); double x; double y; double sum =0; double minus =0; double times =0; double divide =0; double nC

因此,我试图用java制作一个简单的计算器,但不知道如何获取哪个操作的输入。程序要求输入两个数字,然后要求输入操作员。当我运行它直到达到操作类型时,一切都正常。编译器只是跳过它,甚至不让我为它键入任何内容。有什么线索吗

Scanner keyboard = new Scanner(System.in);

double x;
double y;
double sum =0;
double minus =0;
double times =0;
double divide =0;
double nCr =0;
String Op;

System.out.print("X: ");
x = keyboard.nextDouble();
System.out.print("Y: ");
y = keyboard.nextDouble();
System.out.print("Op: ");
Op = keyboard.nextLine();

基本上,
nextDouble
无法识别回车。在每个
nextDouble
之后使用
nextLine

试试看:

System.out.print("X: ");
x = Double.parseDouble(keyboard.nextLine());
System.out.print("Y: ");
y = Double.parseDouble(keyboard.nextLine());
System.out.print("Op: ");
op = keyboard.nextLine();
这将解析您输入的双倍编号,并读取回车

如果需要错误控制(如果用户输入的是字符串而不是数字):

而不是

Op = keyboard.nextLine();
试用

Op = keyboard.next();
看起来像是下一行();方法在使用nextInt()和nextDouble()等方法调用时会出现问题


观察:如果单独调用nextLine(),则不会发生这种情况

请原谅“a”和“b”。我把它换成了“x”和“y”,所以它很相配!这是可行的,但我不清楚为什么会这样。parse的具体功能是什么?
keyBoard.nextLine()
将以
字符串的形式读取输入,然后
Double。parseDouble
将尝试将该
字符串
解析为
Double
。如果无法解析,则每当用户输入非数字的内容时(例如:用户输入“Hello”),它将抛出
inputmaschException
Op = keyboard.next();