本文共 3323 字,大约阅读时间需要 11 分钟。
标签: java基础
把“日一二三四五六”格式的日历转化为“一二三四五六日”格式。
//Example8_16import java.util.*;public class Example8_16 { public static void main(String[] args) { CalendarBean cb = new CalendarBean(); System.out.printf("please input year and month: "); //输入年份和月份 Scanner reader = new Scanner(System.in); int year = 0, month = 0; cb.setYear(year = reader.nextInt()); cb.setMonth(month = reader.nextInt()); String [] a = cb.getCalendar(); //返回号码的一维数组 char [] str = "日一二三四五六".toCharArray(); System.out.printf("----------------------------\n%14d.%-2d\n", year, month); //打印表头 System.out.printf("----------------------------\n"); for(char c : str) System.out.printf("%3c", c); for(int i = 0; i < a.length; i++) //输出数组a { if(i % 7 == 0) System.out.println(""); //换行 System.out.printf("%4s", a[i]); } }}
//CalendarBeanimport java.util.Calendar;public class CalendarBean{ int year = 0, month = 0; public void setYear(int year) { this.year = year; } public void setMonth(int month) { this.month = month; } public String [] getCalendar() { String [] a = new String[42]; //日历最多可达6行 Calendar rili = Calendar.getInstance(); rili.set(year, month - 1, 1); //模拟翻日历 int weekDay = rili.get(Calendar.DAY_OF_WEEK) - 1; //计算出1号的星期 int day = 0; if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) day = 31; if(month == 4 || month == 6 || month == 9 || month == 11) day = 30; if(month == 2) { if(((year % 4 == 0) && (year % 100 != 0)) || year % 400 == 0) day = 29; else day = 28; } for(int i = 0; i < weekDay; i++) a[i] = " "; //日历顺序输出,格式控制 for(int i = weekDay, n = 1; i < weekDay + day; i++) { a[i] = String.valueOf(n); n++; } for(int i = weekDay + day; i < a.length; i++) a[i] = " "; return a; }}
原日历测试样例
修改Example8_16.java, CalendarBean.java不变
//Example8_16import java.util.*;public class Example8_16 { public static void main(String[] args) { CalendarBean cb = new CalendarBean(); System.out.printf("please input year and month: "); //输入年份和月份 Scanner reader = new Scanner(System.in); int year = 0, month = 0; cb.setYear(year = reader.nextInt()); cb.setMonth(month = reader.nextInt()); String [] a = cb.getCalendar(); char [] str = "一二三四五六日".toCharArray(); System.out.printf("----------------------------\n%14d.%-2d\n", year, month); //打印表头 System.out.printf("----------------------------\n"); for(char c : str) System.out.printf("%3c", c); System.out.println(""); int sunday = 0, six = 0; //日一二三四五六 -> 一二三四五六日 //有两种情况:(1)原日历第一行第一列为空,也就是a[0] == " ";(2)不为空 if(a[0] == " ") sunday = 7; for(int i = 1; i < a.length; i++) { System.out.printf("%4s", a[i]); six++; if(six == 6) { if(sunday < a.length) System.out.printf("%4s\n", a[sunday]); sunday += 7; i++; six = 0; } } }}
修改后的日历测试样例