Java循环米转换程序

标签 java

我无法弄清楚如何让程序循环浏览转换菜单,然后从选择“4 Return”返回主菜单,如示例所示。

<小时/>

程序输出的示例:

主菜单

  1. 输入距离

  2. 退出程序

Please enter your choice: 1  

Enter a distance in meters: 500  

转换菜单

  1. 转换为公里

  2. 转换为英寸

  3. 转换为英尺

  4. 返回

Enter your choice: 1

500 meters is 0.5 kilometers

转换菜单

  1. 转换为公里

  2. 转换为英寸

  3. 转换为英尺

  4. 返回

Enter your choice: 3

500 meters is 1640.5 feet  

转换菜单

  1. 转换为公里

  2. 转换为英寸

  3. 转换为英尺

  4. 返回

Enter your choice: 4  

主菜单

  1. 输入距离

  2. 退出程序

Please enter your choice: 2  

Good Bye!

<小时/>

当该程序不包含主菜单和循环返回时,我找到了多种解决方案,但我似乎找不到任何相关内容。

这是我所拥有的:

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int choice;
int option;
double meters = 0;
conversionControl();
choice = keyboard.nextInt();    
    switch (choice) {
        case 1: 
            System.out.println("\nEnter a Distance in Meters:"); 
            meters = keyboard.nextDouble();
            break;
        case 2:
            quitProgram();
            break;
        default:
            showError("Please Enter a Valid Option");
            conversionControl();
            option = keyboard.nextInt();
                if (option == 1) {
                    System.out.println("\nEnter a Distance in Meters:"); 
                    meters = keyboard.nextDouble();
                }
                else if ( option == 2) {
                    quitProgram();
                }
            break;
    }
    do{ 
        menu();
        choice = keyboard.nextInt();
        switch (choice) {
            case 1: 
                showKilometers(meters);
                break;
            case 2: 
                showInches(meters);
                break;
            case 3: 
                showFeet(meters);
                break;
            case 4: 
                conversionControl();
                option = keyboard.nextInt();
                if (option == 1) {
                    System.out.println("\nEnter a Distance in Meters:"); 
                    meters = keyboard.nextDouble();
                }
                else if ( option == 2) {
                    quitProgram();
                }
                break;
            default:
                showError("Please Enter a Valid Option");
                menu();
                choice = keyboard.nextInt();
                break;
        }
    } while(choice != 0); {
    }
}

我想我确实找到了自己的出路,但我一直认为这不是正确的方法或者有更简单的方法。另外,在测试某些输入时会出现一些错误(主要是 showError 方法调用将输出不正确的菜单,或者在多次错误输入后关闭程序)。

任何帮助/建设性批评将不胜感激。我对编码有点陌生(了解 HTML),对这个网站也不太熟悉。

谢谢! 鲍勃

最佳答案

因为它看起来像一个练习,所以我不会给你完整的代码,而是给你一个伪代码来帮助你理解这里的策略。

为了澄清,我将您的第一个菜单命名为 mainMenu,将第二个菜单命名为 convMenu

您已经为 convMenu 实现了良好的策略。这个想法是创建一个循环,并且仅当用户告诉您时才存在。您缺少的是对 mainMenu 执行相同的操作,并将 convMenu 视为 mainMenu 的子菜单。这意味着当您位于 convMenu 中时,您并不处于 mainMenu 之外。

//That's pseudo code
do {
    displayMainMenu();
    readUserInput();
    switch(userInput) {
        case 1 : 
            //here you put your convMenu
            do {
                displayConvMenu();
                readUserInput();
                switch(userInput) {
                    case 1, 2, 3 :
                       doConvertion();
                    case 4 :
                        exitConvMenu = true;
                    default :
                        //wrong input display a message and loop
                }
            } while(!exitConvMenu)
        case 2:
            exitMainMenu = true;
        default :
            //wrong input display a message and loop
    }
} while(!exitMainMenu) 

关于Java循环米转换程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039491/

相关文章:

java - 当设备处于横向模式时显示软键盘

java - HtmlUnit css 未正确应用

java - 如何从字符串中删除一个字符?

java - 使用 Id Autowiring tcp-outbound-channel-adapter 不起作用

java - 数字签名 : security issue between signing on client or on server?

Java JDK 11 打破旧的 Jars/程序

java - 只有创建 View 层次结构的原始线程才能触摸它的 View ?

java - 在 HQL 中使用内部连接的子查询

java - 通过在java中传递值将结果写入html文件 - 任何帮助将不胜感激

java - Java 静态初始化 block 上的奇怪代码