2 weishijun14 weishijun14 于 2015.06.25 08:22 提问

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

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

2个回答

u010668114
u010668114   2015.06.25 08:39

........换行语句,第一次听说,这个应该不算是逻辑语句吧,是你要根据自己的需求来计算位置吧。比如假设每个单元宽度和高度是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); // 日期显示位置
}
}


weishijun14
weishijun14 但是这个公式我实在找不出来。。
2 年多之前 回复
weishijun14
weishijun14 感谢回答!不是换行语句。。我说错了。。是判断某个日期到了周六就下一个日子排到下一行的第一个,比如今天7号是星期六,那么8号就排到下一行第一个。我是想用一个判断语句实现,比如if(总天数-这个月一号星期几)%7=6类似的
2 年多之前 回复
tongyi55555
tongyi55555   2015.06.25 09:52

你可以将日期初始化为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);
        }
    }

输出结果如下所示:

图片说明

weishijun14
weishijun14 感谢大神回答。。虽然我还没学到对象这里。。但是还是感谢这么详尽的解答,谢谢!!我回去试下
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片