学习编程第二周
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习编程第二周相关的知识,希望对你有一定的参考价值。
今天花了2个多小时不断了改进,终于将一个日历的小程序做出来了,主要的内容还是利用循环和判断语句来完成的,视频和书的进程不一样,越看到书后面的内容越觉得自己现在编写的东西很麻烦,可能后面可以利用一些简单的语句来完成一些小的程序,现在奉献上刚完成的日历程序。
import java.util.Scanner;
public class test2 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int year=in.nextInt();
System.out.println("请输入月份:");
int month=in.nextInt();
int sum=0;
int day=0;
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sum=366+sum;
}else{
sum=365+sum;
}
}
for(int i=1;i<month;i++){
if(i==2){
if(year%4==0&&year%100!=0||year%400==0){
sum=29+sum;
}else{
sum=28+sum;
}
}else{
if(i==4||i==6||i==9||i==11){
sum=30+sum;
}else {
sum=31+sum;
}
}
}
if(month==2){
if(year%4==0&&year%100!=0||year%400==0){
day=29;
}else{
day=28;
}
}else{
if(month==4||month==6||month==9||month==11){
day=30;
}else {
day=31;
}
}
System.out.println(month+"月有"+day+"天");
System.out.println(sum%7);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=(sum+1)%7;i++){//sum%7求余是上个月最后一天,这个月第一天需要+1,同时%优先于+,所以需要先将+扩起来才可以表达正常
System.out.print("\t");
}
for(int i=1;i<=day;i++){
if((sum+i)%7>=6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
}
}
}
这个程序主要由3部分构成:1、输入年月然后计算出输入的年月与1900年1月1日之间相差多少天,来确定输入月份之前一个月的最后一天是星期几;2、就是判断润年和区别大小月;3、就是输出问题,输出问题我改了好多次后才确定最后这个方式能够显示的。
最后想多说两句,在整个编写过程中,发现了几个很容易犯错的地方,需要提醒自己留意的,1、大括号,小括号这些一一对应的符号一定要成双成对编写,且编写好后不能轻易删除和改动位置,因为一个小错误,我找了快半个小时,重复的看了又看;2、一定要根据编写规范严格规范自己的程序编写,不然的话找错都很麻烦,现在我还没有完全按照编程规范来编写,所以导致有些错误找出来要很久;3、原来windows的日历最开始的时间也是1900年1月1日,具体是为什么呢?我也不太清楚,可能这天刚好就是周一吧。
以上是关于学习编程第二周的主要内容,如果未能解决你的问题,请参考以下文章