使用 while 循环的 Java 菜单循环

标签 java loops while-loop menu joptionpane

我正在尝试编写一个循环,让用户输入米的值,然后根据给定的菜单,他们将选择一个将打印出转换的选项,它应该运行直到用户输入 4 退出该程序。然而,我的程序无法无序运行每个循环或多次运行,我不确定到底为什么。我知道开关和休息,但我的老师不鼓励我们做任何我们作为一个类(class)还没有做的事情。

import javax.swing.JOptionPane;
public class Conversion_LAbA {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    //Junior Nieves Alvarez, Conversion LabA

    String inputString, inputOption;
    double meters, kilometers, inches, feet;
    int option;
    inputString = JOptionPane.showInputDialog("Enter the Meters value");
    meters = Double.parseDouble(inputString);
    if (meters < 1)
    {
        inputString =JOptionPane.showInputDialog("Enter the Meters value");
    }
    System.out.println("Choose one of the Following"
            + " 1. Convert to Kilometers"

            + " 2. Convert to Inches"

            + " 3. Convert to Feet"

            + " 4. Exit");
    inputOption = JOptionPane.showInputDialog("Choose an Option");
    option = Integer.parseInt(inputOption);
    while (option == 1)
    {
        kilometers = meters*0.001;
        System.out.println(kilometers);
        inputOption = JOptionPane.showInputDialog("Choose an Option");
        option = Integer.parseInt(inputOption);
    }
    while (option == 2)
    {
        inches = meters*39.37;
        System.out.println(inches);
        inputOption = JOptionPane.showInputDialog("Choose an Option");
        option = Integer.parseInt(inputOption);
    }
    while (option == 3)
    {
        feet= meters*3.281;
        System.out.println(feet);
        inputOption = JOptionPane.showInputDialog("Choose an Option");
        option = Integer.parseInt(inputOption);
    }
    if (option == 4)
    {
        System.out.println("The program will end");
        System.exit(0);
    }
}

}

最佳答案

您的逻辑存在一些问题。

  1. 您希望将计量表的输入包装在 while 循环中,这样可以确保用户输入的计量表对于程序执行的其余部分有效。

  2. 剩下要做的就是用 if 语句将您的选项包装在 while 循环中,而不是为每个选项都使用 while 循环。这样您就可以选择一个选项,然后系统会提示您在程序运行期间尝试不同的转换,并能够按照您想要的任何顺序输入选项。

  3. 最后,将测量符号放在输出旁边会很有帮助,这样当用户选择一个选项时,他们可以看到他们使用的转换,km 代表公里,"代表英寸,' 代表英尺。

    String inputString, inputOption;
    double meters = 0, kilometers, inches, feet;
    int option = 0;
    
    while(meters < 1)
    {
        inputString = JOptionPane.showInputDialog("Enter the Meters value");
        meters = Double.parseDouble(inputString);
        if (meters < 1)
        {
        System.out.println("Invalid Meter value, please enter a value >= 1");
        option = 0;
        }
    }
    
    while(option != 4){
        System.out.println("Choose one of the Following"
                + "\n 1. Convert to Kilometers"
                + "\n 2. Convert to Inches"
                + "\n 3. Convert to Feet"
                + "\n 4. Exit");
        inputOption = JOptionPane.showInputDialog("Choose an Option");
        option = Integer.parseInt(inputOption);
        if(option == 1)
        {
            kilometers = meters*0.001;
            System.out.println(kilometers + "km");
        }
        else if(option == 2)
        {
            inches = meters*39.37;
            System.out.println(inches + "\"");
        }
        else if(option == 3)
        {
            feet= meters*3.281;
            System.out.println(feet + "'");
        }
        else if (option == 4)
        {
            System.out.println("The program will end");
        }
    }
    

关于使用 while 循环的 Java 菜单循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510710/

相关文章:

java - JP QL - 一对多关系中的过滤结果

java - 检测字符串变量中的数字(在 Java 中)

c - 在 do-while 循环中验证输入类型

c++ - 您将如何在 Clojure 中编写此 C++ 循环?

android - 视频不循环 Android VideoView

使用LuaJ解释器编译Lua代码的Java方法

java - 使用eclipse制作可执行jar文件

c - 这个循环是如何工作的?

c - while 循环运行一次迭代,不管

java - 当用户输入 "Q"时,While循环不会显示结果