Java Calendar仅打印零

时间:2017-09-17 13:22:51

标签: java

public class JavaCalender {
    int hour, minute, second;

    public void setCurrent() {
        Calendar calendar = new GregorianCalendar();
        this.hour = calendar.get(Calendar.HOUR_OF_DAY);
        this.minute = calendar.get(Calendar.MINUTE);
        this.second = calendar.get(Calendar.SECOND);
    }

    public int getHour() {
        return hour;
    }

    public int getMinute() {
        return minute;
    }

    public int getSecond() {
        return minute;
    }
}

class TestJavaCalender {
    public static void main(String[] args) {
        JavaCalender test = new JavaCalender();
        System.out.print(test.getHour() + "\n" + test.getMinute() + "\n" + test.getSecond());
    }
}

当我尝试运行这段代码时,我非常失望,因为结果不符合我的期望。为什么结果都是0,有人能给我一个精辟的答案以及如何正确使用日历?

2 个答案:

答案 0 :(得分:2)

致电setCurrent()。它现在没用了。

JavaCalender test = new JavaCalender();
test.setCurrent();
System.out.print...
打印之前

根据您的代码设置值的位置。

编辑 :正如@Vikas在评论中所提到的那样

添加到部分为什么结果全部为。因为Java中原始int的默认值为0,并且从未调用此答案点test.setCurrent(),因此默认值永远不会更新。

答案 1 :(得分:0)

从TestJavaCalender类的测试流程中,您可以将“setCurrent()”方法更改为JavaCalender类的构造函数。
orignial:

public void setCurrent() {
    Calendar calendar = new GregorianCalendar();
    this.hour = calendar.get(Calendar.HOUR_OF_DAY);
    this.minute = calendar.get(Calendar.MINUTE);
    this.second = calendar.get(Calendar.SECOND);
}

后:

public JavaCalender() {
    Calendar calendar = new GregorianCalendar();
    this.hour = calendar.get(Calendar.HOUR_OF_DAY);
    this.minute = calendar.get(Calendar.MINUTE);
    this.second = calendar.get(Calendar.SECOND);
}

然后,您可以顺利使用JavaCalender。