Java一维数组打印日历

package kgc;

import java.util.Scanner;

public class Array {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//打印一年的日历
		System.out.println("请输入年份");
		Scanner input = new Scanner(System.in);
		int year = input.nextInt();
		for (int i = 1; i <= 12; i++) {
			System.out.println(i + "月");
			printFullYear(year, i);
			System.out.println("");
			System.out.println("****************************************************");
		}
		input.close();		
		
	}
	//用数组存数据形成日历
	public static void printCalendar(int monday, int monthDay) {
		int[] calendar = new int[7];
		int endNum = 0;
		System.out.print("一\t");
		System.out.print("二\t");
		System.out.print("三\t");
		System.out.print("四\t");
		System.out.print("五\t");
		System.out.print("六\t");
		System.out.print("日\t");
		//打印六行日历的情况
		if ((monday == 6 && monthDay == 31) || (monday == 7 && (monthDay == 30 || monthDay == 31))) {
			for (int i = 0; i < 6; i++) {
				if (i == 0) {
					System.out.println("");
					for (int m = 0; m < monday - 1; m++) {
						System.out.print("\t");
					}
					for (int j = monday - 1; j < 7; j++) {
						calendar[j] = j + 2 - monday;
						System.out.print(calendar[j] + "\t");
					}
					endNum = calendar[6];
				} else if (i == 5) {
					System.out.println("");
					int s = 0;
					for (int j = endNum + 7*(i-1)+1; j < monthDay + 1; j++) {
						calendar[s] = j;
						System.out.print(calendar[s] + "\t");
						s++;
					}
				} else {
					int rowPrint = i * 7 + endNum;
					int a = 6;
					System.out.println("");
					for (int j = 0; j < 7; j++) {
						calendar[j] = rowPrint - a;
						a--;
						System.out.print(calendar[j] + "\t");
					}
				}
			}

		}
		//打印四行情况
		else if(monday==1&&monthDay==28) {
			for(int i=0;i<4;i++) {
				System.out.println("");
				for(int j=0;j<7;j++) {
					calendar[j]=i*7+j+1;
					System.out.print(calendar[j] + "\t");
				}
			}
		}
		//正常打印五行
		else {
			for (int i = 0; i < 5; i++) {
				if (i == 0) {
					System.out.println("");
					for (int m = 0; m < monday - 1; m++) {
						System.out.print("\t");
					}
					for (int j = monday - 1; j < 7; j++) {
						calendar[j] = j + 2 - monday;
						System.out.print(calendar[j] + "\t");
					}
					endNum = calendar[6];
				} else if (i == 4) {
					System.out.println("");
					int s = 0;
					for (int j = endNum + 7*(i-1)+1; j < monthDay + 1; j++) {
						calendar[s] = j;
						System.out.print(calendar[s] + "\t");
						s++;
					}
				} else {
					int rowPrint = i * 7 + endNum;
					int a = 6;
					System.out.println("");
					for (int j = 0; j < 7; j++) {
						calendar[j] = rowPrint - a;
						a--;
						System.out.print(calendar[j] + "\t");
					}
				}
			}
		}
	}
	
	//输出一年的日历
		public static void printFullYear(int year, int month) {
			int totalDay = 0;
			int monday = 0;
			int monthDay = 0;
			for (int i = 1990; i < year; i++) {
				if (i % 4 == 0 && i % 4 != 100 || i % 400 == 0) {
					totalDay += 366;
				} else {
					totalDay += 365;
				}
			}
			for(int j=1;j<month;j++) {
				switch (j) {
				case 2:
					if (year % 4 == 0 && year % 4 != 100 || year % 400 == 0) {
						totalDay += 29;
						break;
					} else {
						totalDay += 28;
						break;
					}
				case 4:
				case 6:
				case 9:
				case 11:
					totalDay += 30;
					break;
				default:
					totalDay += 31;
					break;
				}
			}
			monday = totalDay % 7 + 1;	
			switch (month) {
			case 2:
				if (year % 4 == 0 && year % 4 != 100 || year % 400 == 0) {
					monthDay = 29;
					break;
				} else {
					monthDay = 28;
					break;
				}
			case 4:
			case 6:
			case 9:
			case 11:
				monthDay = 30;
				break;
			default:
				monthDay = 31;
				break;
			}
			printCalendar(monday, monthDay);
		}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java编写的日历记事本的示例代码: ```java import java.util.Scanner; public class CalendarNotes { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[][] calendar = new int[12][31]; while (true) { System.out.println("请选择操作:"); System.out.println("1. 添加日记"); System.out.println("2. 查看日历"); System.out.println("3. 退出程序"); int choice = scanner.nextInt(); if (choice == 1) { System.out.println("请输入日期(格式为:月份-日期):"); scanner.nextLine(); String dateInput = scanner.nextLine(); String[] dateArray = dateInput.split("-"); int month = Integer.parseInt(dateArray[0]) - 1; int day = Integer.parseInt(dateArray[1]) - 1; System.out.println("请输入日记内容:"); String note = scanner.nextLine(); calendar[month][day] = note.hashCode(); System.out.println("日记添加成功!"); } else if (choice == 2) { System.out.println("请输入要查看的月份:"); int month = scanner.nextInt() - 1; System.out.println("请输入要查看的日期:"); int day = scanner.nextInt() - 1; int note = calendar[month][day]; System.out.println("日记内容为:" + (note == 0 ? "无" : note)); } else if (choice == 3) { System.out.println("程序已退出。"); break; } else { System.out.println("输入有误,请重新输入。"); } } } } ``` 该程序使用二维数组来存储日记内容,每个元素存储一个日记的哈希值,如果该日期没有日记,则元素值为0。用户可以选择添加日记、查看日历或退出程序。添加日记时,用户需要输入日期和日记内容,程序会将日记内容的哈希值存储在对应的数组元素中。查看日历时,用户需要输入要查看的日期,程序会输出该日期的日记内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值