You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Calendar类设置时间日期报错,如何解决?

解决Java类中Calendar初始化报错问题

错误原因

你在类的成员变量定义后直接调用flightDate.set()、flightTime.set()这类方法,违反Java语法规则——类的顶级作用域内仅允许定义成员变量、方法、构造器或初始化块,不能直接执行语句,这就是报错<identifier> expected的根源。

修复方案

有两种常用的合法方式来初始化Calendar对象:

方式1:使用实例初始化块

将初始化语句放在实例初始化块中,每次创建Flight对象时会自动执行这段代码:

import java.util.*;

enum CITY{ROME,BUDAPEST,PARIS,GREECE,TALIN,AMSTREDAM,VIENNA;}

class Flight{
    private String flightName = "AirBus";
    private int ticketPrice = 50;
    private CITY Destination = CITY.ROME;
    private int numberOfTravellers = 83;
    private int flightDuration = 2;
    Calendar flightTime = Calendar.getInstance();
    Calendar flightDate = Calendar.getInstance();
    
    // 实例初始化块
    {
        flightDate.set(Calendar.YEAR, 2002);
        flightDate.set(Calendar.MONTH, 2);
        flightDate.set(Calendar.DAY_OF_MONTH, 20); // 推荐用DAY_OF_MONTH替代过时的DAY字段
        flightTime.set(Calendar.HOUR,10);
        flightTime.set(Calendar.MINUTE, 0);
        flightTime.set(Calendar.SECOND, 0);
    }

    private static int goalTicketPrice = 35;
}

方式2:在构造器中初始化

创建Flight类的构造方法,将Calendar的初始化逻辑放在构造器内:

import java.util.*;

enum CITY{ROME,BUDAPEST,PARIS,GREECE,TALIN,AMSTREDAM,VIENNA;}

class Flight{
    private String flightName = "AirBus";
    private int ticketPrice = 50;
    private CITY Destination = CITY.ROME;
    private int numberOfTravellers = 83;
    private int flightDuration = 2;
    Calendar flightTime = Calendar.getInstance();
    Calendar flightDate = Calendar.getInstance();

    private static int goalTicketPrice = 35;
    
    // 构造器
    public Flight() {
        flightDate.set(Calendar.YEAR, 2002);
        flightDate.set(Calendar.MONTH, 2);
        flightDate.set(Calendar.DAY_OF_MONTH, 20);
        flightTime.set(Calendar.HOUR,10);
        flightTime.set(Calendar.MINUTE, 0);
        flightTime.set(Calendar.SECOND, 0);
    }
}

额外提示

Calendar类的DAY字段已过时,建议使用DAY_OF_MONTH来设置日期,避免后续版本的兼容性问题。

内容的提问来源于stack exchange,提问作者inspironman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:05:29