“不过我不会给分”,太抠门了。哈哈。public class mydata {
  int y, m, d;
  mydata(int y1, int m1, int d1) {
    y = y1;
    m = m1;
    d = d1;
  }  mydata() {
    y = 1900;
    m = 1;
    d = 1;
  }  public boolean equals(mydata x) {
    return (y == x.y && m == x.m && d == x.d);
  }  public int compareto(mydata w) {
    int yy1, yy2, mm1, mm2, dd1, dd2;
    int a, s = dd2 - dd1;    //  <---- dd2和dd1在使用之前都没有初始化
    if (y <= w.y) {
      yy1 = y;
      yy2 = w.y;
      mm1 = m;
      mm2 = w.m;
      dd1 = d;
      dd2 = w.d;
    }
    else {
      yy2 = y;
      yy1 = w.y;
      mm2 = m;
      mm1 = w.m;
      dd2 = d;
      dd1 = w.d;
    }
    for (int x = yy1; x <= yy2; x++) {
      for (int i = 1; i <= 12; i++) {
        if (x <= yy1 && i <= mm1) {
          continue;
        }
        if (x >= yy2 && i >= mm2) {
          continue;
        }
        if (x <= yy2 && i < mm2) {
          if (x % 4 == 0 && x % 100 == 0 && x % 400 == 0) {
            switch (i) {
              case 2:
                a = 29;
                s += a;
                break;
              case 1:
              case 3:
              case 5:
              case 7:
              case 8:
              case 10:
              case 12:
                a = 31;
                s += a;
                break;
              case 4:
              case 6:
              case 9:
              case 11:
                a = 30;
                s += a;
                break;
            }
          }
          else {
            switch (i) {
              case 2:
                a = 28;
                s += a;
                break;
              case 1:
              case 3:
              case 5:
              case 7:
              case 8:
              case 10:
              case 12:
                a = 31;
                s += a;
                break;
              case 4:
              case 6:
              case 9:
              case 11:
                a = 30;
                s += a;
                break;
            }
          }
        }
      }
    }
    return s;
  }  public static void main(String args[]) {
    y = integer.parseint(args[0]); 
    
    //y不是静态变量,不能这样用法。后面的m和d,情况相同。
    //integer是类名,类名首字母一般为大写,以下几行情况相同。
    //应该这样写:
/*
     mydata md= new mydata();
     md.y=Integer.parseInt(args[0]);
     ......
     
    */
    
    integer.parseint(m = args[1]);
    integer.parseint(d = args[2]);
    //以上两行,m、d是int类型,args[]是String类型,不能这样赋值。
    mydata wt = new mydata();
    System.out.println(wt.compareto(integer.parseint(args[3]),
                                    integer.parseint(args[4]),
                                    integer.parseint(args[5])));
  }
} //这里还少了一个“}”

解决方案 »

  1.   

    呵呵,找错误我可没耐心,这都是jbuilder帮的忙啊,他的这段代码,语法错误太多,jb能很轻易解决。其它的逻辑错误就不好解决了。我可没那么多的耐心去看他这段代码是干什么用的,呵呵。
      

  2.   

    我不是扣门啊我是不会给啊我是新加入这里的不知道怎么给啊
    谢谢大家的帮忙 程序我改了改现在还有一个错误!大家看看 再帮忙找找!谢
    public class  mydata
    {
    int y,m,d;
    mydata(int y1,int m1,int d1)
       {
    y=y1;
    m=m1;
    d=d1;
       }
    mydata()
        {
    y=1900;
    m=1;
    d=1;
        }
    public boolean equals(mydata x){return(y==x.y&&m==x.m&&d==x.d);}
    public int compareto(mydata w)
    {
    int yy1,yy2,mm1,mm2,dd1,dd2;
    int a,s;
    if(y<=w.y)
           {
          yy1=y;
          yy2=w.y;
          mm1=m;
          mm2=w.m;
          dd1=d;
           dd2=w.d;
           }
    else
           {
          yy2=y;
          yy1=w.y;
          mm2=m;
          mm1=w.m;
           dd2=d;
          dd1=w.d;
           }
    s=dd2-dd1;
    for(int x=yy1;x<=yy2;x++)
    for(int i=1;i<=12;i++)
    {
    if(x<=yy1&&i<=mm1) continue;
    if(x>=yy2&&i>=mm2) continue;
    if(x<=yy2&&i<mm2)
                             {
    if(x%4==0&&x%100==0&&x%400==0)
        {
    switch(i){
    case 2: a= 29;s+=a;break;
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:a=31;s+=a;break;
    case 4:
    case 6:
    case 9:
    case 11:a=30;s+=a;break;}
        }
    else
        {
    switch(i){
    case 2: a= 28;s+=a;break;
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:a=31;s+=a; break;
    case 4:
    case 6:
    case 9:
    case 11:a=30;s+=a;break;
        }}
                             }
    }
    return s;
    }
    public static void main(String args[])
    {
    mydata wt=new mydata(Integer.parseInt(args[0]),Integer.parseInt(args[1]),Integer.parseInt(args[2]));
    int ss=wt.compareto(Integer.parseInt(args[3]),Integer.parseInt(args[4]),Integer.parseInt(args[5]));
       System.out.println(ss);
    }
                                                                    }