A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

俺是新手,4月24号刚开始学习java,以下是自己编的一万年日历代码,请教各位高手这些代码是否还能优化?毕竟代码在到达相同功能前提下,以简洁为好嘛。
import java.util.*;
public class calendar{
        public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                int sum=0;
                for(;;){
                        System.out.print("是否继续:继续(yes)");
                        String con=in.next();
                        if(con.equals("yes")){
                                System.out.println("请输入年份:");
                                int year=in.nextInt();
                                System.out.println("请输入月份");
                                int month=in.nextInt();
                                for(int i=1900;i<year;i++){
                                        if(i%4==0&&i%100!=0||i%400==0){
                                                sum+=366;
                                        }else{
                                                sum+=365;
                                        }
                                }for(int j=1;j<month;j++){
                                        if(j==2){
                                                if(year%4==0&&year%100!=0||year%400==0){
                                                        sum+=29;
                                                }else{
                                                        sum+=28;
                                                }
                                        }else{
                                                if(j==4||j==6||j==9||j==11){
                                                sum+=30;
                                                }else{
                                                        sum+=31;
                                                }
                                        }
                                }
                                int week=sum%7+1;
                                System.out.println("日\t一\t二\t三\t四\t五\t六");
                                for(int i=0;i<week;i++){
                                        System.out.print("\t");
                                }
                                if(month==2){
                                        if(year%4==0&&year%100!=0||year%400==0){
                                                for(int i=1;i<=29;i++){
                                                        if(sum%7!=5){
                                                                System.out.print(i+"\t");
                                                        }else{
                                                                System.out.print(i+"\n");
                                                        }
                                                        sum++;
                                                }
                                        }
                                }else{
                                        if(month==4||month==6||month==9||month==11){
                                                for(int i=1;i<=30;i++){
                                                        if(sum%7!=5){
                                                                System.out.print(i+"\t");
                                                        }else{
                                                                System.out.print(i+"\n");
                                                        }
                                                        sum++;
                                                }       
                                        }else{
                                                for(int i=1;i<=31;i++){
                                                        if(sum%7!=5){
                                                                System.out.print(i+"\t");
                                                        }else{
                                                                System.out.print(i+"\n");
                                                        }
                                                        sum++;
                                                }
                                        }
                                }
                                System.out.println("\t");
                        }else{
                                break;
                        }
                }
        }
}

6 个回复

倒序浏览
4.24就有这程度.不错不错!
回复 使用道具 举报
import java.io.*;class putout{public void putout(int f,int x,int y){int i;int a[]= new int[40]; System.out.println(" 日 一 二 三 四 五 六 "+" "+f+"月");for (i=0;i<x;i++){System.out.print(" "); }for(i=x;i<x+y;i++)a[i]=i-x+1;for(i=x;i<x+y;i++){if ((i%7==0)&&(i>0))System.out.print("\n");if (a[i]<10)System.out.print(" "+a[i]);else System.out.print(" "+a[i]);}System.out.println("\n");}}class st{public static void main(String args[])throws IOException{putout p=new putout();int year,mouth,y=1,t,i;InputStreamReader ir;BufferedReader in;ir=new InputStreamReader(System.in);in=new BufferedReader(ir);System.out.print("请输入一个年份:");String s=in.readLine();year=Integer.parseInt(s);if((year%4==0 && year%100!=0)||(year%400==0))mouth=1;else mouth=0;y=year;for(i=1;i<year;i++){if((i%4==0 && i%100!=0)||(i%400==0))y++;}y=y%7;for(i=1;i<13;i++){switch(i){case 1: {p.putout(1,y,31);y=(y+31)%7;break;}case 2: {p.putout(2,y,28+mouth);y=(y+28+mouth)%7;break;}case 3: {p.putout(3,y,31);y=(y+31)%7;break;}case 4: {p.putout(4,y,30);y=(y+30)%7;break;}case 5: {p.putout(5,y,31);y=(y+31)%7;break;}case 6: {p.putout(6,y,30);y=(y+30)%7;break;}case 7: {p.putout(7,y,31);y=(y+31)%7;break;}case 8: {p.putout(8,y,31);y=(y+31)%7;break;}case 9: {p.putout(9,y,30);y=(y+30)%7;break;}case 10: {p.putout(10,y,31);y=(y+31)%7;break;}case 11: {p.putout(11,y,30);y=(y+30)%7;break;}case 12: {p.putout(12,y,31);y=(y+31)%7;break;}}}}}
回复 使用道具 举报
import java.io.*;
class putout{public void putout(int f,int x,int y){int i;int a[]= new int[40];
System.out.println(" 日 一 二 三 四 五 六 "+" "+f+"月");
for (i=0;i<x;i++)
{System.out.print(" ");
}
for(i=x;i<x+y;i++)
a[i]=i-x+1;
for(i=x;i<x+y;i++)
{
if ((i%7==0)&&(i>0))
System.out.print("\n");
if (a[i]<10)
System.out.print(" "+a[i]);
else System.out.print(" "+a[i]);
}
System.out.println("\n");
}
}
class st{
public static void main(String args[])
throws IOException{putout p=new putout();
int year,mouth,y=1,t,i;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
System.out.print("请输入一个年份:");
String s=in.readLine();
year=Integer.parseInt(s);
if((year%4==0 && year%100!=0)||(year%400==0))mouth=1;
else mouth=0;y=year;
for(i=1;i<year;i++)
{
if((i%4==0 && i%100!=0)||(i%400==0))
y++;
}
y=y%7;
for(i=1;i<13;i++)
{
switch(i)
{
case 1:
{
p.putout(1,y,31);
y=(y+31)%7;break;
}
case 2:
{
p.putout(2,y,28+mouth);
y=(y+28+mouth)%7;
break;
}
case 3:
{
p.putout(3,y,31);
y=(y+31)%7;
break;
}
case 4:
{
p.putout(4,y,30);
y=(y+30)%7;
break;
}
case 5:
{
p.putout(5,y,31);
y=(y+31)%7;
break;
}
case 6:
{
p.putout(6,y,30);
y=(y+30)%7;break;
}
case 7:
{
p.putout(7,y,31);
y=(y+31)%7;
break;
}
case 8:
{
p.putout(8,y,31);
y=(y+31)%7;
break;
}
case 9:
{
p.putout(9,y,30);
y=(y+30)%7;
break;
}
case 10:
{
p.putout(10,y,31);
y=(y+31)%7;
break;
}
case 11:
{
p.putout(11,y,30);
y=(y+30)%7;
break;
}
case 12:
{
p.putout(12,y,31);
y=(y+31)%7;
break;
}
}
}
}
}
回复 使用道具 举报
337091921 发表于 2013-4-27 01:59
import java.io.*;class putout{public void putout(int f,int x,int y){int i;int a[]= new int[40]; Syst ...

谢谢,这里面有些代码还木有学到,今后再到过来研究研究,非常感谢
回复 使用道具 举报
337091921 发表于 2013-4-27 02:07
import java.io.*;
class putout{public void putout(int f,int x,int y){int i;int a[]= new int[40];
Sy ...

putout代码还木有学到,得研究研究,谢谢
回复 使用道具 举报
观摩一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马