问题描述
- 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);
}
}
输出结果如下所示:
时间: 2024-12-02 20:15:24