当前位置: 首页 > 面试题库 >

While循环仅执行一次

屈博
2023-03-14
问题内容

我很难弄清楚为什么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循环中的情况,因此退出循环。



 类似资料:
  • 我试图用Java实现一个简单的客户机-服务器应用程序。 这是代码: 客户端.java 服务器.java 这是主要类: 代码的逻辑很简单:客户端和服务器都在等待< code>while(true)循环中的消息。 服务器的< code>listen方法中的< code>while循环执行得很好。但是,在< code>listenForMessages方法中,循环似乎只执行一次。我只看到一个“在循环”印

  • 本文向大家介绍C#中for循环、while循环循环执行的方法,包括了C#中for循环、while循环循环执行的方法的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下C#中的循环执行for循环 在这一节练习中,我们向大家介绍一下C#中的另一种重要的循环语句,for循环。 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:逻辑表达式,循环控制条件;当条件为真时,循环执行循环体中的语句。

  • 我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。

  • 感谢您的建议这是我第一次使用stackoverflow,因为我对编程相当陌生。我遇到的问题是,在执行while循环之后,我的程序没有请求名称。它似乎不在这一行之后执行。System.out.print(“输入减肥者的姓名:”);字符串名称=input.nextLine();有人能解释一下我可能错过了扫描器实用程序的使用吗。

  • 只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。

  • 编写程序时,您可能会遇到需要反复执行操作的情况。 在这种情况下,您需要编写循环语句以减少行数。 JavaScript支持所有必要的循环,以减轻编程压力。 while循环 JavaScript中最基本的循环是while循环,将在本章中讨论。 while循环的目的是只要expression为真,就重复执行语句或代码块。 表达式变为false,循环终止。 流程图 while loop流程图如下 - 语法