getDay()方法返回给定日期的星期几不起作用

Sai*_*aid 5 java date dayofweek java.util.calendar

我正在尝试在HackerRank上完成名为Java Date and Time的任务.

任务

你有一个约会.您只需要编写getDay方法,该方法返回该日期的日期.例如,如果您在2017年8月14日获得日期,则该方法应该返回MONDAY作为该日期的日期.

我尽力完成任务,但我得到了null结果或NullPointerException错误.我想知道我哪里做错了.以下是我的代码:

提前致谢!

我的代码:

import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String month = in.next();
        String day = in.next();
        String year = in.next();

        System.out.println(getDay(day, month, year));
    }

    public static String getDay(String day, String month, String year) {
        Calendar cal = Calendar.getInstance();
        cal.set(Integer.valueOf(year), (Integer.valueOf(month) - 1), Integer.valueOf(day));
        return cal.getDisplayName(cal.get(Calendar.DAY_OF_WEEK), Calendar.LONG, Locale.getDefault());
    }
}
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 9

return不在; 你不想要cal.get在第一列cal.getDisplayName.目前,我使用您的代码获取月份名称.改为

return cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)

并称之为

public static void main(String[] args) {
    System.out.println(getDay("14", "8", "2017"));
}
Run Code Online (Sandbox Code Playgroud)

我得到了(正如预期的那样)

Monday
Run Code Online (Sandbox Code Playgroud)

在新代码中,我更喜欢java.time(Java 8+)中的新类,以及DateTimeFormatter类似的,

public static String getDay(String day, String month, String year) {
    int y = Integer.parseInt(year), m = Integer.parseInt(month), d = Integer.parseInt(day);
    return java.time.format.DateTimeFormatter.ofPattern("EEEE")
            .format(LocalDate.of(y, m, d));
}
Run Code Online (Sandbox Code Playgroud)

  • 一:[`Calendar.DAY_OF_WEEK`](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#DAY_OF_WEEK)是一个`静态最终`常数[`7`] (https://docs.oracle.com/javase/8/docs/api/constant-values.html#java.util.Calendar.DAY_OF_WEEK).它不会"成为*一周中的实际日期*",它永远不会改变.这是一个常数.二:看看[`Calendar.SUNDAY`](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#SUNDAY)这是一个[`1`](https: //docs.oracle.com/javase/8/docs/api/constant-values.html#java.util.Calendar.SUNDAY).三:首选`java.util.Calendar`中的`java.time`类 (2认同)