While循环仅执行一次
我很难弄清楚为什么while循环" title="while循环">while循环实际上不会循环。它运行一次并停止。
import java.util.*;public class mileskm {
public static void main(String[] args) {
Scanner inp = new Scanner(System.in);
boolean continue1 = true;
while (continue1 == true) {
System.out.println("Would you like to convert m-km or km-m(km for m-km and m for km-m)");
String convert = inp.nextLine();
if (convert.equalsIgnoreCase("km")) {
System.out.println("Enter the mileage to be converted.");
double num = inp.nextDouble();
double con = num * 1.60934;
System.out.println(con);
continue1 = true;
} else if (convert.equalsIgnoreCase("m")) {
System.out.println("Enter the km to be converted.");
double num = inp.nextDouble();
double con = num * 0.621371;
System.out.println(con);
continue1 = true;
} else {
continue1 = false;
}
}
}
}
我正在尝试使其循环,以便用户能够多次转换单位。任何帮助都欢迎!
回答:
问题在于,当您呼叫时nextDouble()
,它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需inp.nextLine();
在调用后放一行代码nextDouble()
。
示例和完整说明:
假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为"km\n123\n"
。
该代码String convert = inp.nextLine();
获取值"km"
,并且使输入超出第一个"\n"
。
代码double num =
inp.nextDouble();获取字符串"123"
并返回值(double)123.0。看到时,它将停止解析'\n'
,但不占用字符-
保留在输入缓冲区中。
在循环的下一次迭代,inp.nextLine();
看到"\n"
立即的,所以String convert =
"";。这会触发else
循环中的情况,因此退出循环。
以上是 While循环仅执行一次 的全部内容, 来源链接: utcz.com/qa/430997.html