这是我用Java做的一个日历,但老是DaYin这个函数有问题,请教大神,求解!!!

tuohe 发布于 2014/07/03 22:27
阅读 247
收藏 0
package helloworld;


import java.util.Scanner;
import java.lang.Math;




//假设1900年1月1日是星期一




public class Calender {
 static int Day(int year,int mouth)//用于计算总的天数
    {
    int zday=0;//用于表示总的天数
    int j=1;
    for(int i=1900;i<year;i++)
    {
    if(((i%4==0)&&(i%100!=0))||(i%400==0))
    {
    zday+=366;
    }
    else
    {
    zday+=365;
    }}
    while(j<mouth)
    {
    switch(j)
    {
    case 1:zday+=31;break;
    case 2:if(((year%4==0)&&(year%100!=0))||(year%400==0))
    {zday+=29;break;} else{zday+=28;break;}
    case 3:zday+=31;break;
    case 4:zday+=30;break;
    case 5:zday+=31;break;
    case 6:zday+=30;break;
    case 7:zday+=31;break;
    case 8:zday+=31;break;
    case 9:zday+=30;break;
    case 10:zday+=31;break;
    case 11:zday+=30;break;
    case 12:zday+=31;break;
   
    }
    j++;
    }
    return zday;}
 static int firstDay(int zday)//用于计算输入的月份的第一天是星期几
    {
    int fday;//用于保存输入月份的第一天是星期几
    fday=(zday+1)%7;
    return fday;
    }
   static int mouthDay(int year,int mouth)//用于计算输入当月有多少天
    {
    boolean flag=true;
    int mday=30;
    if(((year%4==0)&&(year%100!=0))||(year%400)==0)
    {
    flag=true;
    }
    else
    {
    flag=false;
    }
    switch(mouth)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:mday= 31;break;
    case 4:
    case 6:
    case 9:
    case 11:mday=30;break;
    case 2:if(flag){mday=29;}else{mday=28;}    break;
   
   
    }
    return mday;
    }
  static void DaYin(int fday,int mday)//打印日历     这个函数有问题望指教
   /* {
    if(fday==7)
    {
    int count=0;
    for(int i=1;i<=mday;i++)
    {
    if(count<7)
    {
    System.out.print(i+"\t");
    count++;
    }
    else{
   
    System.out.println(i+"\t");
    count=0;
    }}}
    else*/
    {
    int j=1;
    int count=0;
    while(j<=fday)
    {System.out.print(" \t");
    count++;}
   
    for(int i=1;i<=mday;i++)
    {
    if(count<7)
    {
    System.out.print(i+"\t");
    count++;
    }
    else{
   
    System.out.println(i+"\t");
    count=0;
    }
    }
   
   
    }
public static void main(String[] args) {

int year;//用于存储显示日历的年份
int mouth;//用于存储显示日历的月份
System.out.println("*****欢迎使用万历年*****");
Scanner in = new Scanner(System.in);
System.out.println("请输入年份");
year = in.nextInt();
System.out.println("请输入月份");
mouth = in.nextInt();
System.out.println("您输入的是" + year + "年" + mouth + "月");
//System.out.println(year + "年是" + itrun(year) + "年");
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
        int zday=Day(year,mouth);
        System.out.println("请输入总的天数"+zday);
int fday=firstDay(zday);
System.out.println("请输入第一天是星期几"+fday);
int mday=mouthDay(year,mouth);
System.out.println("请输入改月的天数"+mday);
DaYin( fday,mday);
}


}

加载中
0
pcxsvl
pcxsvl

1.else*/ 后的循环  

while(j<=fday) 

    {System.out.print(" \t"); 

    count++;} 

是一个死循环应加入j++

2.还有接着的for 循环应改为

for(int i=1;i<=mday;i++){ 
    if(count<7) 
    { 
    System.out.print(i+"\t"); 
    count++; 
    } 
    else{ 
                System.out.println("");
    System.out.print(i+"\t"); 
    count=1; 
    } 
    } 
3.去掉注释后在这个for 循环后还少了一个}

4.main函数的打印次序要改,这个就自己去作了哦;

0
tuohe
tuohe
谢谢你指出的错误。我最后调试成功啦!
返回顶部
顶部