首页 > 解决方案 > 输入日期 (MM/dd/yyyy) 到字符串

问题描述

你好我是使用java的新手我只需要一些建议..

这就是我需要做的:用户输入日期 2018 年 8 月 15 日,控制台应该有输出:“你好!这是 2018 年 8 月的第 15 天。”

这是我的代码

    package newdate;
    import java.util.Scanner;
    public class NewDate {


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

    System.out.print("Enter the date in mm/dd/yyyy: ");
    String str=sc.next();

    switch (str) {
        case 1:  str.substring(0,2) = "January";
                 break;
        case 2:  str.substring(0,2) = "February";
                 break;
        case 3:  str.substring(0,2) = "March";
                 break;
        case 4:  str.substring(0,2) = "April";
                 break;
        case 5:  str.substring(0,2) = "May";
                 break;
        case 6:  str.substring(0,2) = "June";
                 break;
        case 7:  str.substring(0,2) = "July";
                 break;
        case 8:  str.substring(0,2) = "August";
                 break;
        case 9:  str.substring(0,2) = "September";
                 break;
        case 10: str.substring(0,2) = "October";
                 break;
        case 11: str.substring(0,2) = "November";
                 break;
        case 12: str.substring(0,2) = "December";
                 break;
        default: str.substring(0,2) = "Invalid month";
                 break;

    }
    System.out.println("Hello! This is day " + str.substring(3,5) +" of the month of " + str.substring(0,2) +" in the year of our Lord" + str.substring(6,10));

}

    }

问题是数据类型,我希望将数字作为月份的月份替换为字符串(月份)示例:11 = 11 月

我该怎么做?

标签: java

解决方案


首先,对于现实世界的编程,人们将使用LocalDate标准库中的来保存日期并DateTimeFormatter解析用户在LocalDate. 请参阅底部的链接。

最根本的是,使用您的代码,您需要一个单独的String变量来表示月份的名称。您不能将其分配回您已有的字符串中。只需在开始时声明String monthName;并为其分配适当的值switch

此外,当str是字符串且 1 是时int,您不能打开str并将 1 用作大小写标签。直接的解决方法是打开str.substring(0,2)(月份数字作为字符串)并使用"01","02"等作为案例标签。另一种常见的解决方案是将月份数解析为一个int(请参阅下面的其他链接或搜索如何执行此操作),然后按原样保留案例标签 1、2 等。

链接


推荐阅读