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

回到顶部