【问题标题】:Want to return to Main Menu in Switch Case想要返回 Switch Case 中的主菜单
【发布时间】:2017-07-15 10:57:17
【问题描述】:

下面是我计算年龄的代码。

我想在案例 1 执行时再次显示主菜单:Select your choice:...

我正在休息,但那不起作用。

在我的控制台中,完成后再次显示Enter your Birth date(DD):

我想显示:Select your choice. Any Idea?

    import java.util.Calendar;
    import java.util.Scanner;

    public class Switch {
        public static void main(String args[])
        {
            System.out.println("Select your choice");
            System.out.println("1. To Calculate your Age");
            System.out.println("2. Calculator");
            System.out.println("3. To Exit");
            boolean exit=false;
            Scanner sc1=new Scanner(System.in);
            int choice=sc1.nextInt();
            do{
                switch(choice)
                {   
                case 1:

                    Calendar c1 = Calendar.getInstance();
                    int currDate = c1.get(Calendar.DATE);
                    //System.out.println(currDate);

                    int currMonth = c1.get(Calendar.MONTH)+1;
                    //System.out.println(currMonth);

                    int currYear=c1.get(Calendar.YEAR);
                    //System.out.println(currYear);
                    Scanner sc2=new Scanner(System.in);
                    System.out.println("Enter your Birth date(DD): ");
                    int birthDate=sc2.nextInt();

                    System.out.println("Enter your Birth month(MM): ");
                    int birthMonth=sc2.nextInt();

                    System.out.println("Enter your Birth year(YYYY): ");
                    int birthYear=sc2.nextInt();
                    int calculateDate=0;


                    calculateDate=currDate-birthDate;

                    int calculateMonth=currMonth-birthMonth;
                    int calculateYear=currYear-birthYear;

                    System.out.println("You are : "+ calculateDate+"days "+" "+calculateMonth+"months "+calculateYear+"years OLD");
                    System.out.println("thank you..");
                    System.out.println("\n");
                    break;
            case 2:

                   System.out.println("This is case 2");
                   break;

            case 3:

                    exit=true;
                    break;

            }
        }while(!exit);  
    }
}

【问题讨论】:

  • 你没有在你的循环中设置choice
  • 将整个程序置于循环中(将 do{ 作为 main 方法的第一行)

标签: java switch-statement do-while


【解决方案1】:

将下面的行移到 do...while 中,因为 do while 至少执行一次。

        System.out.println("Select your choice");
        System.out.println("1. To Calculate your Age");
        System.out.println("2. Calculator");
        System.out.println("3. To Exit");
        Scanner sc1 = new Scanner(System.in);
        int choice = sc1.nextInt();

SwitchCase.java

import java.util.Calendar;
import java.util.Scanner;

public class SwitchCase {
    public static void main(String args[]) {
        boolean exit = false;
        do {
            System.out.println("Select your choice");
            System.out.println("1. To Calculate your Age");
            System.out.println("2. Calculator");
            System.out.println("3. To Exit");
            Scanner sc1 = new Scanner(System.in);
            int choice = sc1.nextInt();
            switch (choice) {
            case 1:
                Calendar c1 = Calendar.getInstance();
                int currDate = c1.get(Calendar.DATE);
                // System.out.println(currDate);
                int currMonth = c1.get(Calendar.MONTH) + 1;
                // System.out.println(currMonth);
                int currYear = c1.get(Calendar.YEAR);
                // System.out.println(currYear);
                Scanner sc2 = new Scanner(System.in);
                System.out.println("Enter your Birth date(DD): ");
                int birthDate = sc2.nextInt();
                System.out.println("Enter your Birth month(MM): ");
                int birthMonth = sc2.nextInt();
                System.out.println("Enter your Birth year(YYYY): ");
                int birthYear = sc2.nextInt();
                int calculateDate = 0;
                calculateDate = currDate - birthDate;
                int calculateMonth = currMonth - birthMonth;
                int calculateYear = currYear - birthYear;
                System.out.println("You are : " + calculateDate + "days " + " "
                        + calculateMonth + "months " + calculateYear
                        + "years OLD");
                System.out.println("thank you..");
                System.out.println("\n");
                break;
            case 2:
                System.out.println("This is case 2");
                break;
            case 3:
                exit = true;
                break;
            }
        } while (!exit);
    }
}

样品运行

Select your choice
1. To Calculate your Age
2. Calculator
3. To Exit
1
Enter your Birth date(DD): 
1
Enter your Birth month(MM): 
1
Enter your Birth year(YYYY): 
1920
You are : 14days  6months 97years OLD
thank you..


Select your choice
1. To Calculate your Age
2. Calculator
3. To Exit

【讨论】:

  • 哦!是的...正确。我只是忘了这样做。顺便说一句,谢谢。
【解决方案2】:

执行 case 1 时,只需将“true”分配给变量 exit。

【讨论】:

    【解决方案3】:

    您已经给出了在循环外选择选项的选项。选择选项的代码必须在循环内。

    以下是更新后的代码,可能会起作用:

    import java.util.Calendar;
    import java.util.Scanner;
    
    import java.util.Calendar;
    import java.util.Scanner;
    
    public class Switch {
        public static void main(String args[])
        {
            boolean exit;
            do{
                    System.out.println("Select your choice");
                    System.out.println("1. To Calculate your Age");
                    System.out.println("2. Calculator");
                    System.out.println("3. To Exit");
                    exit=false;
                    Scanner sc1=new Scanner(System.in);
                    int choice=sc1.nextInt();
                        switch(choice)
                        {   
                        case 1:
    
                            Calendar c1 = Calendar.getInstance();
                            int currDate = c1.get(Calendar.DATE);
                            //System.out.println(currDate);
    
                            int currMonth = c1.get(Calendar.MONTH)+1;
                            //System.out.println(currMonth);
    
                            int currYear=c1.get(Calendar.YEAR);
                            //System.out.println(currYear);
                            Scanner sc2=new Scanner(System.in);
                            System.out.println("Enter your Birth date(DD): ");
                            int birthDate=sc2.nextInt();
    
                            System.out.println("Enter your Birth month(MM): ");
                            int birthMonth=sc2.nextInt();
    
                            System.out.println("Enter your Birth year(YYYY): ");
                            int birthYear=sc2.nextInt();
                            int calculateDate=0;
    
    
                            calculateDate=currDate-birthDate;
    
                            int calculateMonth=currMonth-birthMonth;
                            int calculateYear=currYear-birthYear;
    
                            System.out.println("You are : "+ calculateDate+"days "+" "+calculateMonth+"months "+calculateYear+"years OLD");
                            System.out.println("thank you..");
                            System.out.println("\n");
                            break;
                    case 2:
    
                           System.out.println("This is case 2");
                           break;
    
                    case 3:
    
                            exit=true;
                            break;
    
                    }
                }while(!exit);
        }
    }
    

    【讨论】:

    • 是的!我只是忘了这样做...非常感谢。
    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多