java学习之——日历程序[控制台]
来源:互联网 发布:软件测试说明书 编辑:程序博客网 时间:2024/06/05 15:34
// 本程序的功能是输入年和月之后,会在控制台显示当月的日历。是学习java后第一个稍为完整的程序,尚未处理各点的异常。
// java实现,感谢 51自学网的 壁虎
// 作者: Tome
// 日期: 2014.3.3
import java.util.*; //需要使用到键盘的输入,所以要引入这个文件
// 文件名为sample_calendar, 所以这个类名也被确定为sample_calendar,学java的第一个特别之处
public class sample_calendar {
//定义各月的天数,这里忽略了闰年, 这里要加public static,我自己摸索的,可以用。
public static int[] monthdays = {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 定义星期字符串
public static String[] weeks = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
// 一个很小的函数,用来确定某年是否是闰年,返回真代码是闰年,反之不是
private static boolean isRun(int y)
{
if(((y % 4== 0) && (y%100 != 0))|| y % 400 == 0 )
{
return true;
}
return false;
}
// 计算某年某月的第一天是周几,
// year 年份
// month 月份
private static int theFirstDay(int year, int month)
{
// 1900.1.1是周一,因此计划当月第一天与此相距多少天,再对7求模来确定月初是周几
// 计算这个时间分为两步,先是计划相距多少年,把各年的天数相加。
int days = 0;
if (year > 1900)
{
for( int y = 1900; y < year; y++)
{
if (isRun(y))
days += 366;
else
days += 365;
}
}
// 第二步 计算当年当月之前一共有多少天
if ( month > 1)
{
for (int m = 1; m < month; m++)
days += monthdays[m];
//判断是否闰年
if (( month > 2) && isRun(year)){
days ++;
}
}
// 再加上当日这一天
days++;
// 计算出当日是星期几,0代表周日
int week = days % 7;
return week;
}
// 入口程序,与C的main相当
public static void main(String[] args)
{
// 默认计显示2014 February的月历
int year = 2014;
int month = 2;
Scanner in = new Scanner(System.in);
// 输入年份,月份
System.out.println("Please input years:");
year = in.nextInt();
System.out.println("Please input months:");
month = in.nextInt();
// 计算月初是周几
int week = theFirstDay(year, month);
// 计算当月一共有多少天
int monthDays = monthdays[month];
if ( ( month == 2) && isRun(year))
monthDays = 29;
// 开始显示日历
System.out.println("Calendar");
System.out.println(year+"年"+month+"月的日历如下:");
int loc = 0; //第行最多显示7天,loc用来定位显示位置,0代表行首
System.out.print("\n--------------------------------------------------");
// 打印表头,星期日到星期六
for(int i = 0; i < 7; i++)
System.out.print(weeks[i] + "\t");
System.out.println();
// first line,需要要特别处理一下,月初可能并不是周日,需要确定显示位置
if ((week != 0) && (true))
{
for (loc = 0; loc < week; loc ++)
{
System.out.print("\t");
}
}
// 显示剩下的各天
for (int data = 1; data <= monthDays; data++)
{
System.out.print(data+"\t");
loc++;
if(loc % 7 == 0)
System.out.println();
}
System.out.print("\n--------------------------------------------------");
}//主函数结束
}
// java实现,感谢 51自学网的 壁虎
// 作者: Tome
// 日期: 2014.3.3
import java.util.*; //需要使用到键盘的输入,所以要引入这个文件
// 文件名为sample_calendar, 所以这个类名也被确定为sample_calendar,学java的第一个特别之处
public class sample_calendar {
//定义各月的天数,这里忽略了闰年, 这里要加public static,我自己摸索的,可以用。
public static int[] monthdays = {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 定义星期字符串
public static String[] weeks = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
// 一个很小的函数,用来确定某年是否是闰年,返回真代码是闰年,反之不是
private static boolean isRun(int y)
{
if(((y % 4== 0) && (y%100 != 0))|| y % 400 == 0 )
{
return true;
}
return false;
}
// 计算某年某月的第一天是周几,
// year 年份
// month 月份
private static int theFirstDay(int year, int month)
{
// 1900.1.1是周一,因此计划当月第一天与此相距多少天,再对7求模来确定月初是周几
// 计算这个时间分为两步,先是计划相距多少年,把各年的天数相加。
int days = 0;
if (year > 1900)
{
for( int y = 1900; y < year; y++)
{
if (isRun(y))
days += 366;
else
days += 365;
}
}
// 第二步 计算当年当月之前一共有多少天
if ( month > 1)
{
for (int m = 1; m < month; m++)
days += monthdays[m];
//判断是否闰年
if (( month > 2) && isRun(year)){
days ++;
}
}
// 再加上当日这一天
days++;
// 计算出当日是星期几,0代表周日
int week = days % 7;
return week;
}
// 入口程序,与C的main相当
public static void main(String[] args)
{
// 默认计显示2014 February的月历
int year = 2014;
int month = 2;
Scanner in = new Scanner(System.in);
// 输入年份,月份
System.out.println("Please input years:");
year = in.nextInt();
System.out.println("Please input months:");
month = in.nextInt();
// 计算月初是周几
int week = theFirstDay(year, month);
// 计算当月一共有多少天
int monthDays = monthdays[month];
if ( ( month == 2) && isRun(year))
monthDays = 29;
// 开始显示日历
System.out.println("Calendar");
System.out.println(year+"年"+month+"月的日历如下:");
int loc = 0; //第行最多显示7天,loc用来定位显示位置,0代表行首
System.out.print("\n--------------------------------------------------");
// 打印表头,星期日到星期六
for(int i = 0; i < 7; i++)
System.out.print(weeks[i] + "\t");
System.out.println();
// first line,需要要特别处理一下,月初可能并不是周日,需要确定显示位置
if ((week != 0) && (true))
{
for (loc = 0; loc < week; loc ++)
{
System.out.print("\t");
}
}
// 显示剩下的各天
for (int data = 1; data <= monthDays; data++)
{
System.out.print(data+"\t");
loc++;
if(loc % 7 == 0)
System.out.println();
}
System.out.print("\n--------------------------------------------------");
}//主函数结束
}
0 0
- java学习之——日历程序[控制台]
- java基础之日历程序
- java控制台打印日历
- java控制台可视化日历
- Java小程序之可视化日历
- C++ 显示当前日历(控制台程序)
- Java实训——编写一个窗体程序显示日历。
- java—可视化日历
- 程序设计之C#控制台输出日历示例
- JAVA日历小程序
- java日历小程序
- Java的日历程序
- Java程序打印日历
- java日历小程序
- Java 日历程序
- java可视化日历程序
- 用java在控制台打印日历格式
- 日历系统——控制台输入年份和月份,打印该月的日历
- Linux unexpected end of file ,`xxxx' unexpected
- 《产品经理那些事儿》
- 对图像尺寸重置 opencv
- eclipse中的汉字极小的解决方案
- xcode 静态库路径设置
- java学习之——日历程序[控制台]
- kaptcha验证码使用
- ubuntu 12.10开机无状态栏与开机密码正确不能登录问题的解决
- uva1133---Vacation
- String类型数学表达式直接进行运算
- 【操作系统-Windows】win7 操作
- 创建文件作为pv
- X connection to localhost:10.0 host broken (explicit kill or server shutdown)
- android setDrawingCacheEnabled