从日期开始星期几

Take day of week from date

我的程序有问题,我必须在其中插入一个随机日期 (dd/MM/yyyy),如果那天是星期五或星期六,它应该打印出 "It's time for party"。我插入日期为星期五或星期六,但它仍然打印出来 "You should study"。有人可以帮忙吗?

Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    LocalDate date = LocalDate.parse(input, formatter);
    System.out.println(date.getDayOfWeek().name());

    if (date.getDayOfWeek().equals("FRIDAY")) {
        System.out.println("Time for party, because it is: " + date.getDayOfWeek());
    }
    else if (date.getDayOfWeek().equals("SATURDAY"))
        System.out.println("Time for party, because it is: " + date.getDayOfWeek());
    else {
        System.out.println("You should study! It is: " + date.getDayOfWeek());
    }

您正在将 DayOfWeek 实例与 String 实例进行比较,因此它们永远不会相等,因为它们是不同的类型。

一个解决方案是在调用 equals 之前调用 toString

if (date.getDayOfWeek().toString().equals("FRIDAY")){...}

或更好地使用:

if (date.getDayOfWeek() == DayOfWeek.FRIDAY) {...}

LocalDate.getDayOfWeek returns DayOfWeek 类型的枚举。但是您正在将 String 与枚举进行比较。

你必须做

date.getDayOfWeek() == DayOfWeek.FRIDAY

您应该将字符串值替换为枚举类型 DayOfWeek.FRIDAYDayOfWeek.SATURDAY。当您将字符串与枚举进行比较时。

if (date.getDayOfWeek().equals(DayOfWeek.FRIDAY)) {
                System.out.println("Time for party, because it is: " + date.getDayOfWeek());
            }
            else if (date.getDayOfWeek().equals(DayOfWeek.SATURDAY))
                System.out.println("Time for party, because it is: " + date.getDayOfWeek());
            else {
                System.out.println("You should study! It is: " + date.getDayOfWeek());
            }