一、问题描述:
已知2022年的第一天是星期六,通过键盘输入任意一个1~12间的整数,打印出该月份的日历
二、算法描述:
由于每个月的天数有所差别,故可以通过二维数组来对每个月的天数进行存储,再结合Switch语句做具体输出,此思路对于初学者比较友好且易于实现
三、代码实现:
public class HomeWork_5{
public static void main(String[] args){
System.out.println("Please enter a month :");
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
System.out.println("**********2022年 "+ m +" 月份***********");
System.out.println("日\t一\t二\t三\t四\t五\t六");
switch(m){
case 1:{
int month[][]={{1},{2,3,4,5,6,7,8},{9,10,11,12,13,14,15},{16,17,18,19,20,21,22},{23,24,25,26,27,28,29},
{30,31}};
System.out.print("\t\t\t\t\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 2:{
int month[][]={{1,2,3,4,5},{6,7,8,9,10,11,12},{13,14,15,16,17,18,19},{20,21,22,23,24,25,26},{27,28}};
System.out.print("\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 3:{
int month[][]={{1,2,3,4,5},{6,7,8,9,10,11,12},{13,14,15,16,17,18,19},{20,21,22,23,24,25,26},{27,28,29,30,31}};
System.out.print("\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}
case 4:{
int month[][]={{1,2},{3,4,5,6,7,8,9},{10,11,12,13,14,15,16},{17,18,19,20,21,22,23},{24,25,26,27,28,29,30}};
System.out.print("\t\t\t\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 5:{
int month[][]={{1,2,3,4,5,6,7},{8,9,10,11,12,13,14},{15,16,17,18,19,20,21},{22,23,24,25,26,27,28},{29,30,31}};
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 6:{
int month[][]={{1,2,3,4},{5,6,7,8,9,10,11},{12,13,14,15,16,17,18},{19,20,21,22,23,24,25},{26,27,28,29,30}};
System.out.print("\t\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 7:{
int month[][]={{1,2},{3,4,5,6,7,8,9},{10,11,12,13,14,15,16},{17,18,19,20,21,22,23},{24,25,26,27,28,29,30},{31}};
System.out.print("\t\t\t\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 8:{
int month[][]={{1,2,3,4,5,6},{7,8,9,10,11,12,13},{14,15,16,17,18,19,20},{21,22,23,24,25,26,27},{28,29,30,31}};
System.out.print("\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 9:{
int month[][]={{1,2,3},{4,5,6,7,8,9,10},{11,12,13,14,15,16,17},{18,19,20,21,22,23,24},{25,26,27,28,29,30}};
System.out.print("\t\t\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 10:{
int month[][]={{1,2,3,4,5},{6,7,8,9,10,11,12},{13,14,15,16,17,18,19},{20,21,22,23,24,25,26},{27,28,29,30,31}};
System.out.print("\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 11:{
int month[][]={{1,2,3,4,5},{6,7,8,9,10,11,12},{13,14,15,16,17,18,19},{20,21,22,23,24,25,26},{27,28,29,30}};
System.out.print("\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}break;
case 12:{
int month[][]={{1,2,3},{4,5,6,7,8,9,10},{11,12,13,14,15,16,17},{18,19,20,21,22,23,24},{25,26,27,28,29,30,31}};
System.out.print("\t\t\t\t");
for(int i =0; i<month.length; i++){
for(int j=0; j<month[i].length ;j++){
System.out.print(month[i][j]+"\t");
}
System.out.println();
}
}
default:{System.out.print("输入有误,请输入1~12的整数!");}break;
}
}
}
注:作者所用开发工具为VSCode
总结
该算法实现主要针对与Java的初学者,故此算法仍有较大的局限性,可做进一步优化,扩展其灵活性但思路简洁。