【问题标题】:Changing outputs on a textual menu that uses a switch statement在使用 switch 语句的文本菜单上更改输出
【发布时间】:2019-11-21 09:17:39
【问题描述】:

使用 Java 我有一个系统类,它有不同的方法来显示计算机系统的详细信息。然后我有一个测试系统类,它使用 switch 语句将这些方法作为菜单调用。如果用户输入选项 1 或 2,那么它会显示一些我已经硬编码的输入。但如果他们选择选项三,那么他们将被提升为输入自己的输入。

如果他们在选项 3 中输入选项 1 和 2,然后再次输入选项 1 和 2,我如何让选项 1 和 2 显示他们的输入而不是我的输入?

我完全是新手,我不知道该怎么做,我在网上和书本上进行了研究,并在想可能在某个地方使用 if else 语句,但我可能错了。任何意见,将不胜感激。

这是我的代码:

import java.util.Scanner;

public class SystemTest_Y3881268 {

    public static void main(String[] args) {
        //Create System_Y3881268 object and test methods
        System_Y3881268 s=new System_Y3881268("Lenovo", 
                "Ideacentre A340-24IWL", 2);
        s.setHardDisk(2);
        s.setMemory(128);
        s.setPurchaseCost(599);

        //Create textual menu
        int memorySize;
        double hardDiskSize;

        @SuppressWarnings("resource")
        Scanner keyboard = new Scanner(System.in);
        char choice;
        do 
        {
            System.out.println();
            System.out.println("***** Computer system menu *****");
            System.out.println();
            System.out.println("Choice 1: Print System Details");
            System.out.println("Choice 2: Diagnose System");
            System.out.println("Choice 3: Set Details");
            System.out.println("Choice 4: Print System Properties");
            System.out.println("Choice 5: Quit the Program");
            System.out.println();
            System.out.println("Enter a number from 1 - 5");
            System.out.println();
            choice = keyboard.next().charAt(0);
            switch(choice) 
            {

            case '1': 
            {
                s.displayDetails();
            }
            break;

            case '2': 
            {
                s.diagnoseSystem();
            } 
            break;

            case '3': 
            {
                System.out.println("Enter hard disk size in GB: ");
                hardDiskSize = keyboard.nextDouble();
                if(hardDiskSize<2) 
                {
                    System.out.println("Hard disk size = Low");
                }

                else 
                {
                    System.out.println("Hard disk size = Ok");
                }

                System.out.println();
                System.out.println("Enter memory size in MB: ");
                memorySize = keyboard.nextInt();
                if(memorySize<128) 
                {
                    System.out.println("Memory Ok = False");
                }

                else 
                {
                    System.out.println("Memory Ok = True");
                }


            }
            break;

            case '4' : 
            {
                System_Y3881268.displaySystemProperties();
            }
            break;

            case '5' : break;
            default :  System.out.println("Enter only numbers from 1 - 5");
                       System.out.println();
            }
        } while(choice != '5');




    }

}

【问题讨论】:

  • 运行上面的代码时你的问题到底是什么?
  • 更改尺寸后,它不打印新尺寸是他所说的

标签: java if-statement switch-statement output


【解决方案1】:

在案例 3 的 switch 语句中,您正在设置两个变量 hardDiskSize 和 memorySize 的值。

在选择1或2时,您将打印S.DisplayDetails()和S.Diagnossystem。

在这种情况下是您的“系统”。

现在在查看案例 3 时,您不会直接更改“系统”中的任何内容,而只是更改两个变量的值。

然而,为了显示新尺寸,这些更改需要发生在您的实际“系统”上

所以这样的事情可以解决问题:

case '3': 
    {
        System.out.println("Enter hard disk size in GB: ");
        hardDiskSize = keyboard.nextDouble();
        s.setHardDisk(hardDiskSize); //setting the harddisk size in the "System"
        if(hardDiskSize<2) 
        {
            System.out.println("Hard disk size = Low");
        }

        else 
        {
            System.out.println("Hard disk size = Ok");
        }

        System.out.println();
        System.out.println("Enter memory size in MB: ");
        memorySize = keyboard.nextInt();
        s.setMemory(memorySize); //setting the new memory size within the "system"
        if(memorySize<128) 
        {
            System.out.println("Memory Ok = False");
        }

        else 
        {
            System.out.println("Memory Ok = True");
        }
    }

或者如果您只想在满足条件的情况下更改尺寸:

case '3': 
    {
        System.out.println("Enter hard disk size in GB: ");
        hardDiskSize = keyboard.nextDouble();
        if(hardDiskSize<2) 
        {
            System.out.println("Hard disk size = Low");
        }

        else 
        {
            System.out.println("Hard disk size = Ok");
            s.setHardDisk(hardDiskSize); //setting the harddisk size in the "System" if it is ok
        }

        System.out.println();
        System.out.println("Enter memory size in MB: ");
        memorySize = keyboard.nextInt();
        if(memorySize<128) 
        {
            System.out.println("Memory Ok = False");
        }

        else 
        {
            s.setMemory(memorySize); //setting the new memory size within the "system" if it is ok
            System.out.println("Memory Ok = True");
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多