java 使用switch语句打印月份名称,直到给出有效输入[已关闭]

hmae6n7t  于 2022-11-20  发布在  Java
关注(0)|答案(2)|浏览(122)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

20小时前就关门了。
Improve this question
使用Switch语句创建一个程序,该程序将要求用户输入1 - 12之间的数字,则每个数字对应于日历中的一个月。如果数字不在范围中,则显示“该值不在日历上”。然后,它将询问用户是否要重试一个数字,或者它将关闭程序。如果用户输入Y表示是,则它将再次执行程序。如果用户选择N表示否,则将自动终止程序,并显示系统已终止。

import java.util.Scanner;

public class calendar {

      public static void main(String[] args) {

            Scanner in = new Scanner(System.in);

            System.out.print("Enter month's number: ");

            int monthNumber;

            monthNumber = in.nextInt();

            switch (monthNumber) {

            case 1:

                  System.out.println("January");
                          
                  break;

            case 2:

                  System.out.println("February");

                  break;

            case 3:

                  System.out.println("March");

                  break;

            case 4:

                  System.out.println("April");

                  break;

            case 5:

                  System.out.println("May");

                  break;

            case 6:

                  System.out.println("June");

                  break;

            case 7:

                  System.out.println("July");

                  break;

            case 8:

                  System.out.println("August");

                  break;

            case 9:

                  System.out.println("September");

                  break;

            case 10:

                  System.out.println("October");

                  break;

            case 11:

                  System.out.println("November");

                  break;

            case 12:

                  System.out.println("December");

                  break;

            default:

                  System.out.println("Invalid month.");

                  break;

            }

      }

}
polhcujo

polhcujo1#

首先,按照您的指示- * 如果数字不在范围内,则显示“该值不在日历上。"*,而不是“无效的月份”。
你可以使用一个常规的if语句,而不是一个开关。

System.out.print("Enter month's number: ");
try {
    int monthNumber = Integer.parseInt(in.nextLine()); 
    if (monthNumber < 1 || monthNumber > 12) {
        throw new RuntimeException("out of bounds");
    } 
    System.out.println(monthName(monthNumber)); // extract your original logic to a method
} catch (Exception e) {
    System.out.println("The value is not on the calendar.");
}

询问用户是否要重试
看起来你没有尝试过这个,但是把上面的代码 Package 在一个while循环中,就像这样

String again = "Y";
while ("Y".equals(again)) {
    System.out.print("Enter month's number: ");
    try {... 
}

在catch主体中,加入

System.out.println("Try again? (Y/N)"); 
again = in.nextLine().strip();

它将显示系统已终止
同样,按照说明在while循环后打印此内容

pjngdqdw

pjngdqdw2#

因此,您必须实现“* 然后它将询问用户是否要重试... *”部分。
你需要初始化一个布尔变量来检查用户是否想再试一次。(我建议在程序的一个单独的块中初始化所有的变量,这样看起来更整洁。)

boolean ch;

现在,您可以运行一个for循环,直到变量(ch)变为false。

for (ch = true; ch != false; ) {
//insert code here
}

您可以将switch case复制并粘贴到for循环中,并在循环完成后询问用户是否要重试。

for (ch = true; ch != false; ) {
            System.out.println("Enter a number");
            d = sc.nextInt();
            switch (d) 
            {
            case 1: 
                System.out.println("January");
                break;
            case 2: 
                System.out.println("February");
                break;
            case 3: 
                System.out.println("March");
                break;
            case 4: 
                System.out.println("April");
                break;
            case 5: 
                System.out.println("May");
                break;
            case 6: 
                System.out.println("June");
                break;
            case 7: 
                System.out.println("July");
                break;
            case 8: 
                System.out.println("August");
                break;
            case 9: 
                System.out.println("September");
                break;
            case 10: 
                System.out.println("October");
                break;
            case 11: 
                System.out.println("November");
                break;
            case 12: 
                System.out.println("December");
                break;
            default: 
                System.out.println("Invalid Number");
            }
            System.out.println("Again?");
            yn = sc.next().charAt(0);
            if (yn == 'Y' || yn == 'y') {
                ch = true;
            } else {
                ch = false;
            }
            
        }

将所有这些组合在一起,您的程序应该看起来像这样:

import java.util.*;
public class months {
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int d;
        boolean ch; 
        char yn;
        for (ch = true; ch != false; ) {
            System.out.println("Enter a number");
            d = sc.nextInt();
            switch (d) 
            {
            case 1: 
                System.out.println("January");
                break;
            case 2: 
                System.out.println("February");
                break;
            case 3: 
                System.out.println("March");
                break;
            case 4: 
                System.out.println("April");
                break;
            case 5: 
                System.out.println("May");
                break;
            case 6: 
                System.out.println("June");
                break;
            case 7: 
                System.out.println("July");
                break;
            case 8: 
                System.out.println("August");
                break;
            case 9: 
                System.out.println("September");
                break;
            case 10: 
                System.out.println("October");
                break;
            case 11: 
                System.out.println("November");
                break;
            case 12: 
                System.out.println("December");
                break;
            default: 
                System.out.println("Invalid Number");
            }
            System.out.println("Again?");
            yn = sc.next().charAt(0);
            if (yn == 'Y' || yn == 'y') {
                ch = true;
            } else {
                ch = false;
            }
            
        }
    }
}
  • 注意:如果用户输入“Y”或“y”以外的任何选项,则将结束程序。如果要添加类似program finished和invalid选项的内容,只需使用if else-if语句。*

希望这对你有帮助:)

相关问题