刚开始学JAVA,想请教一个关于JAVA小程序的问题。
/*代码我写出来了,月份输入3到12都可以正常输出,
但是月份输入1或2就显示不了,麻烦告知我问题出在哪儿,
可能有些地方看不到。。。。
附:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
*/
import java.util.*;
public class test{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:"); //输入年数,如2014
int year=in.nextInt(); //接收年的值
System.out.println("请输入月份:"); //输入月份,如3
int month=in.nextInt(); //接收月份的值
if(month==1){ //将接收到的月份“1”改变值为13,同时减年数减1
year=year-1;
month=13;
}else if(month==2){ //将接收到的月份“2”改变值为14,同时减年数减1
year=year-1;
month=14;
}else {
System.out.print("日\t一\t二\t三\t四\t五\t六"); //输入日历的星期数,是列的字段
int days; //定义相对月份的天数"days"
if(year%4==0&&year%100!=0||year%400==0){ //根据不同的月份赋予不同的“days”
if(month==14){
days=29;
}else if(month==13||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
}else {
days=30;
}
}else {
if(month==14){
days=28;
}else if(month==13||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
}else {
days=30;
}
}
int w; //定义“w”为输入年数对应是星期几
w=(1+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7; //使用基姆拉尔森计算公式
if(w==7){ //从这里开始,根据w的不同值进行输出,从而得出类似日历表的效果
System.out.print("\n");
for(int i=1;i<=days;i++){
if(i%7!=0){
System.out.print(i+"\t");
continue;
}else if(i%7==0){
System.out.print(i+"\n");
}
}
}else if(w==1){
System.out.print("\n");
System.out.print("\t1\t2\t3\t4\t5\t6\n");
for(int i=7;i<=days;i++){
if((i+1)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+1)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==2){
System.out.print("\n");
System.out.print("\t\t1\t2\t3\t4\t5\n");
for(int i=6;i<=days;i++){
if((i+2)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+2)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==3){
System.out.print("\n");
System.out.print("\t\t\t1\t2\t3\t4\n");
for(int i=5;i<=days;i++){
if((i+3)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+3)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==4){
System.out.print("\n");
System.out.print("\t\t\t\t1\t2\t3\n");
for(int i=4;i<=days;i++){
if((i+4)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+4)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==5){
System.out.print("\n");
System.out.print("\t\t\t\t\t1\t2\n");
for(int i=3;i<=days;i++){
if((i+5)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+5)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==6){
System.out.print("\n");
System.out.print("\t\t\t\t\t\t1\n");
for(int i=2;i<=days;i++){
if((i+6)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+6)%7==0){
System.out.print(i+"\n");
}
}
}
}
}
}