Java 使用 while 循环的菜单循环
Java menu loop using while loop
我正在尝试编写一个循环,让用户输入一个米值,然后根据给定的菜单,他们将选择一个选项来打印出转换结果,它应该 运行 直到用户输入 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);
}
}
}
你的逻辑有几个问题。
您想在 while 循环中包装您的仪表输入,这样您可以确保用户输入的仪表在程序执行的其余部分有效。
剩下要做的就是用 if 语句将您的选项包装在 while 循环中,而不是对每个选项进行 while 循环。通过这种方式,您可以 select 一个选项,然后系统会提示您在程序的 运行 中尝试不同的转换,并且能够以您想要的任何顺序输入您的选项。
最后,将测量符号放在输出旁边是有帮助的,这样当用户select选择一个选项时,他们可以看到他们使用的是什么转换,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 循环,编译器将继续 运行 该循环,直到数字发生变化。数字不会改变,所以状态将保持不变。
您确实需要一个 switch 语句,或一系列 IF-ELSE 语句。之前我有一位老师让我们做 IF-ELSE 语句来向我们展示它在许多选项下变得多么麻烦。然后他们给了我们switch语句。
没有中断,没有切换,有一些验证
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");
}
}
}
}
我正在尝试编写一个循环,让用户输入一个米值,然后根据给定的菜单,他们将选择一个选项来打印出转换结果,它应该 运行 直到用户输入 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);
}
}
}
你的逻辑有几个问题。
您想在 while 循环中包装您的仪表输入,这样您可以确保用户输入的仪表在程序执行的其余部分有效。
剩下要做的就是用 if 语句将您的选项包装在 while 循环中,而不是对每个选项进行 while 循环。通过这种方式,您可以 select 一个选项,然后系统会提示您在程序的 运行 中尝试不同的转换,并且能够以您想要的任何顺序输入您的选项。
最后,将测量符号放在输出旁边是有帮助的,这样当用户select选择一个选项时,他们可以看到他们使用的是什么转换,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 循环,编译器将继续 运行 该循环,直到数字发生变化。数字不会改变,所以状态将保持不变。
您确实需要一个 switch 语句,或一系列 IF-ELSE 语句。之前我有一位老师让我们做 IF-ELSE 语句来向我们展示它在许多选项下变得多么麻烦。然后他们给了我们switch语句。
没有中断,没有切换,有一些验证
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");
}
}
}
}