Java 我能';我不明白为什么扫描在此代码下不起作用

Java 我能';我不明白为什么扫描在此代码下不起作用,java,string,java.util.scanner,calculator,Java,String,Java.util.scanner,Calculator,我只是为了好玩而开始编写代码,试着做一个基本的计算器, 但我有个问题 下面是我的代码 我不明白为什么temp3不起作用 我想检查一下我犯了什么错误,所以我做了temp5,但效果不错 有人能解释一下原因吗?问题是nextDouble()在输入第二个双精度时没有用完新行字符。因此nextLine()会看到新行已经存在并使用它 添加额外的nextLine()调用以使用第二个号码的换行符 temp2 = scan.nextDouble(); // Add consuming of new line

我只是为了好玩而开始编写代码,试着做一个基本的计算器, 但我有个问题

下面是我的代码



我不明白为什么temp3不起作用

我想检查一下我犯了什么错误,所以我做了temp5,但效果不错


有人能解释一下原因吗?

问题是
nextDouble()
在输入第二个
双精度时没有用完新行字符。因此
nextLine()
会看到新行已经存在并使用它

添加额外的
nextLine()
调用以使用第二个号码的换行符

temp2 = scan.nextDouble();

// Add consuming of new line here.
String dummy = scan.nextLine();

System.out.println("What arithmetic operation you want to do?(+,-,/,*)");

temp3 = scan.nextLine();

这段代码可以编译吗?你为什么不试试看temp3的值呢?这叫做调试,它是编译的。对不起,我刚看到这个。实际上我做了,我做了另一个变量temp5,因为我认为temp3不起作用,因为它使用了两次(这太愚蠢了)。它仍然不起作用,我通过这个网站问:)。我试过了,它起作用了。你能告诉我它是怎么工作的吗?我是说为什么第二个NextDouble没有用?
temp2 = scan.nextDouble();

// Add consuming of new line here.
String dummy = scan.nextLine();

System.out.println("What arithmetic operation you want to do?(+,-,/,*)");

temp3 = scan.nextLine();