使用while循环的Java菜单循环

使用while循环的Java菜单循环,java,loops,while-loop,menu,joptionpane,Java,Loops,While Loop,Menu,Joptionpane,我试图写一个循环,让用户输入一个米的值,然后根据给定的菜单,他们将选择一个选项,打印出转换,它应该运行,直到用户输入4退出程序。然而,我的程序无法按顺序或多次运行每个循环,我不知道确切的原因。我知道开关和断路器,但是我的老师不鼓励我们做任何我们作为一个班级还没有做的事情 import javax.swing.JOptionPane; public class Conversion_LAbA { public static void main(String[] args) { // TO

我试图写一个循环,让用户输入一个米的值,然后根据给定的菜单,他们将选择一个选项,打印出转换,它应该运行,直到用户输入4退出程序。然而,我的程序无法按顺序或多次运行每个循环,我不知道确切的原因。我知道开关和断路器,但是我的老师不鼓励我们做任何我们作为一个班级还没有做的事情

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);
    }
}

}您的逻辑有几个问题

您希望将米的输入包装在while循环中,这样可以确保用户输入的米在程序执行的剩余时间内有效

剩下要做的就是用if语句将选项包装在while循环中,而不是为每个选项包装while循环。通过这种方式,您可以选择一个选项,然后系统会提示您在程序运行过程中尝试不同的转换,并且您可以按任意顺序输入选项

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

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循环,编译器将继续运行该循环,直到数字发生变化。这个数字不会改变,所以州会保持不变


您确实需要一个switch语句或一系列IF-ELSE语句。在那之前,我有一位老师让我们做IF-ELSE语句,向我们展示有很多选项会变得多么麻烦。然后他们给了我们开关语句。

没有中断,没有开关,还有一些验证

package com.qvs;

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;
        int option;
        for (;;) {
            inputString = JOptionPane.showInputDialog("Enter the Meters value");
            meters = Double.parseDouble(inputString);
            if (meters >= 1) {
                System.out.println("Choose one of the Following"
                        + " 1. Convert to Kilometers"

                        + " 2. Convert to Inches"

                        + " 3. Convert to Feet"

                        + " 4. Exit");


                option = 0;
                while ((option < 1) || (option > 4)) {
                    inputOption = JOptionPane.showInputDialog("Choose an Option");
                    option = Integer.parseInt(inputOption);
                    if (option == 1) {
                        System.out.println(meters * 0.001);
                    } else if (option == 2) {
                        System.out.println(meters * 39.37);
                    } else if (option == 3) {
                        System.out.println(meters * 3.281);
                    } else if (option == 4) {
                        System.out.println("The program will end");
                        System.exit(0);
                    } else {
                        System.out.println("Invalid option");
                    }
                }
            } else {
                System.out.println("Meters entered must be >= 1");
            }
        }
    }
}

你不应该对每个选项都有一段时间的循环。。。