利用Java输入一串文本信息,获取该月的日历信息
一、运行结果
二、运行代码
Main.java
package calendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("请输入要查询的日期:");
Scanner reader = new Scanner(System.in);
String interMessage = reader.next();
CalendarBean cb = new CalendarBean(interMessage);
String []a = cb.getCalendar();
char[] str = "日一二三四五".toCharArray();
//输出日历标题
for(char c: str){
System.out.printf("%4c",c);
}
//输出日历内容
for (int i = 0; i < a.length; i++) {
if(i%7==0)
System.out.printf("\n");
System.out.printf("%4s",a[i]);
}
}
}
CalendarBean.java
package calendar;
import java.util.Calendar;
import java.util.StringTokenizer;
public class CalendarBean {
private int year = 0, month = 0;
public void setYear(int year) {
this.year = year;
}
public void setMonth(int month) {
this.month = month;
}
CalendarBean(String enterMessage){
String regex = "[^0123456789.]+"; //匹配非数字字符序列
enterMessage = enterMessage.replaceAll(regex, "#");
StringTokenizer stringTokenizer = new StringTokenizer(enterMessage, "#");
String item_1 = stringTokenizer.nextToken();
setYear(Integer.parseInt(item_1));
String item_2 = stringTokenizer.nextToken();
setMonth(Integer.parseInt(item_2));
}
public String[] getCalendar(){
String [] a = new String[42]; //一页日历有42个位置
Calendar rili = Calendar.getInstance(); //初始化一个日历对象
rili.set(year, month-1, 1);
//计算出1号的星期
int weekDay = rili.get(Calendar.DAY_OF_WEEK) - 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 == 8 || month == 10 || month == 11)
day = 30;
if(month == 2){
if(((year%4==0)&&(year%100!=0))||(year%400==0))
day = 28;
else
day = 27;
}
//构建一个日历信息的序列表
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;
}
}