问题在于,当您呼叫时
nextDouble(),它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需
inp.nextLine();在调用后放一行代码
nextDouble()。
示例和完整说明:
假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为
"kmn123n"。
该代码
String convert = inp.nextLine();获取值
"km",并且使输入超出第一个
"n"。
代码
double num =inp.nextDouble();获取字符串
"123"并返回值(double)123.0。看到时,它将停止解析
'n',但不占用字符-
保留在输入缓冲区中。
在循环的下一次迭代,
inp.nextLine();看到
"n"立即的,所以
String convert ="";。这会触发
else循环中的情况,因此退出循环。



