java编写万年历,如何编写换行语句

新手小白,才学到循环语句,就要求写一万年历,不知道如何写日历中的换行语句,求帮助

........换行语句,第一次听说,这个应该不算是逻辑语句吧,是你要根据自己的需求来计算位置吧。比如假设每个单元宽度和高度是x和y,那么
第一行第一个位置是(0,0),那么第一行第十个就是(10x,0),然后第二行第一个就是(0,y)。这样不就换行显示了么?

for(int i ; i < row ; i++){
for(int j; j< column; j++){
show(i*x, j*y); // 日期显示位置
}
}


你可以将日期初始化为Calendar对象,然后调用get方法即可获取你想要的第几个问题。下面是一个具体的例子,通过传入一个日期对象来实现日期对象当前月份的日期输出:

public static void main(String[] args) {
    printMonth(Calendar.getInstance());
}

public static final String[] CHINA = { "七", "一", "二", "三", "四", "五", "六" };

    /**
     * 输出给定日期所在月份的日历图
     */
    public static void printMonth(Calendar calendar) {
        int oldMonth = calendar.get(Calendar.MONTH);
        int curMonth = oldMonth;
        calendar.set(Calendar.DAY_OF_MONTH, 1); // 设置起始日期为1号
        // 输出第一行星期
        for (int i = 0; i < CHINA.length; i++) {
            System.out.print(CHINA[i] + "\t");
        }
        System.out.println();

        boolean firstRowFlag = true;
        int col = 0;
        int week = calendar.get(Calendar.WEEK_OF_MONTH);
        while (curMonth == oldMonth) {
            // 这里通过WEEK_OF_MONTH来判断当前日期是该月份的第一周,如果周发生了变化,需要另起一行进行输出
            if (week != calendar.get(Calendar.WEEK_OF_MONTH)) {
                week = calendar.get(Calendar.WEEK_OF_MONTH);
                col = 0;
                System.out.println();
            } else {
                col = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            }
            // 需要打印第一行的前面空白部分,只打印一次即可。firstRowFlag用于标记
            if (week == 1 && firstRowFlag) {
                for (int i = 0; i < col; i++) {
                    System.out.print("\t");
                }
                firstRowFlag = false;
            }
            // 输出日期号
            System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "\t");
            // 更新日期,每次加一天
            calendar.add(Calendar.DAY_OF_MONTH, 1);
            // 更新月份
            curMonth = calendar.get(Calendar.MONTH);
        }
    }

输出结果如下所示:

图片说明