首页 > 解决方案 > 不知道如何使用 LocalDate

问题描述

我正在学习java,我需要用这个做一个代码:创建一个构造函数,如果日期是星期一,变量total会有10%的折扣。

但是当我在主目录中输入日期时出现错误,并且不知道如何创建本地日期“星期一”的布尔值。有人能帮我吗?

我的代码:

package pedido;
import java.time.DayOfWeek;
import java.time.LocalDate;

public class pedido {

    private int numero;
    private LocalDate datapedido;
    private double quantidade, valor, total;
    private boolean sunday;

    public pedido(int m, LocalDate j, double p, double k) {
        this.numero = m;
        this.datapedido = j;
        this.quantidade = p;
        this.valor = k;
    }
        
    
    public void totalpedido() {
        if(sunday == true) {
            total = (this.valor * this.quantidade) * 0.9;
            System.out.printf("Por hoje ser domingo o total ficou: R$%.2f", total);
        }
        if(sunday == false) {
            total = (this.valor * this.quantidade);
            System.out.printf("O total ficou: %.2f", total);
        }
    }
    
}

和主要的:

package pedido;
import java.time.DayOfWeek;
import java.time.LocalDate;

public class program {

    public static void main(String[] args) {
        
        pedido p1 = new pedido(111, 2021-09-26, 2, 36.50);
        p1.totalpedido();
        
        pedido p2 = new pedido(222, 2021-09-23, 1, 13.25);
        p2.totalpedido();
            
        
    }

}

错误:

Multiple markers at this line
  - The constructor pedido(int, int, int, double) is 
   undefined
  - The literal 09 of type int is out of range

标签: javadayofweeklocaldate

解决方案


该类LocalDate有一个getDayOfWeek()返回DayOfWeek枚举的方法。所以你可以写

if (datapedido.getDayOfWeek() == DayOfWeek.SUNDAY) {
     // it's Sunday
}

要实际创建您的LocalDate对象,您可以编写

LocalDate.of(2021, 9, 23)

这是一个类型的表达式LocalDate


推荐阅读