Java_控制台实现可视化日历

本文介绍了如何使用Java在控制台中创建可视化日历,包括两种不同的实现方法,展示了在没有图形用户界面的情况下,通过命令行实现日历的显示技巧。
摘要由CSDN通过智能技术生成

最优解:

package cn.myAlgorithm;

import java.time.LocalDate;

public class CalendarTest {
	public static void main(String[] args) {
		LocalDate date = LocalDate.now();
		int month = date.getMonthValue();
		int today = date.getDayOfMonth();

		date = date.minusDays(today - 1);
		int weekdayValue = date.getDayOfWeek().getValue();
		System.out.println("Mon Tue Wed Thu Fri Sat Sun");
		for (int i = 1; i < weekdayValue; i++) {
			System.out.print("    ");
		}
		while (date.getMonthValue() == month) {
			System.out.printf("%3d", date.getDayOfMonth());
			if (date.getDayOfMonth() == today) {
				System.out.print("*");
			} else {
				System.out.print(" ");
			}
			if (date.getDayOfWeek().getValue() == 7) {
				System.out.println();
			}
			date = date.plusDays(1);
		}
	}
}

效果:
在这里插入图片描述

其他解1:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class VisualCalendar2 {

	public static void main(String[] args) throws ParseException {
		System.out.println("Please input date(Example:2019-7-17): ");
		Scanner scanner = new Scanner(System.in);
		String str1 = scanner.nextLine();
		System.out.println("Your date is: " + str1);

		// convert String to date
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
		Date date1 = sdf1.parse(str1);

		// convert date to calendar
		GregorianCalendar c1 = new GregorianCalendar();
		c1.setTime(date1);

		int day = c1.get(Calendar.DATE);

		c1.set(Calendar.DATE, 1);

		System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
		int dow = c1.get(Calendar.DAY_OF_WEEK) - 1;
		// System.out.println(dow);

		int count = 0;
		int maxDate = c1.getActualMaximum(Calendar.DATE);
		for (int i = 1 - dow; i <= maxDate; i++) {
			if (i == day) {
				System.out.print(i + "*\t");
			} else if (i >= 1) {
				System.out.print(i + "\t");
			} else {
				System.out.print("\t");
			}
			count++;
			if (count % 7 == 0 && count != 0) {
				System.out.println();
			}
		}
	}

}

其他解2:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class VisualCalendar {

	public static void main(String[] args) throws ParseException {
		System.out.println("Please input date(Example:2019-7-17): ");
		Scanner scanner = new Scanner(System.in);
		String str1 = scanner.nextLine();
		System.out.println("Your date is: " + str1);

		// convert String to date
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
		Date date1 = sdf1.parse(str1);

		// convert date to calendar
		GregorianCalendar c1 = new GregorianCalendar();
		c1.setTime(date1);

		int day = c1.get(Calendar.DATE);

		c1.set(Calendar.DATE, 1);

		System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
		int dow = c1.get(Calendar.DAY_OF_WEEK);
		// System.out.println(dow);
		for (int i = 0; i < dow - 1; i++) {
			System.out.print("\t");
		}

		int maxDate = c1.getActualMaximum(Calendar.DATE);
		for (int i = 1; i <= maxDate; i++) {
			System.out.print(c1.get(Calendar.DATE) + ((c1.get(Calendar.DATE) == day) ? "*" : "") + "\t");
			if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
				System.out.println();
			}
			c1.add(Calendar.DATE, 1);
		}

	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值