程序不工作?

时间:2016-05-30 05:04:21

标签: java date

问题是找到两个日期之间的天数.example-input-26/3/2000和12/8/2014。输出将是这两个日期之间的天数。
有一个错误说"标识符预期"并且i = 1突出显示。我也不确定该程序是否完全正确。

import java.util.*;  
class yearst
{  

    int a[]={0,31,28,31,30,31,30,31,30,31,30,31,30}; 

    int i,s,s1,s2,s3,k,diy,m,m1,m2,d1,d2,y1,y2,y;

    i=1;s1=0;s2=0;s3=0;diy=365;


      void leap(int y)
        {
        if(y%4==0 && y%100!=0 || y%400==0) //for leap year
        {
            a[2]=29;
            diy=366;
        }
         else
         { 
            a[2]=28;
            diy=365;

        }
        }


        public static void main(String args[])
        {
        Scanner ob=new Scanner(System.in);
        System.out.println("Enter the months,dates and years");
        m1=ob.nextInt();
        m2=ob.nextInt();
        d1=ob.nextInt();
        d2=ob.nextInt();
        y1=ob.nextInt();
        y2=ob.nextInt();
        for(i=y1;i<y2;i++)
        {
            ob.leap(i+1)
            m=1*diy;
            s1=s1+m;
        }

        for(i=1;i<m1;i++)//no of days left in y1
        {
            ob.leap(y1);
            s2+=a[i];
        }
        s2+=d1;
        k=diy-s2;
        for(i=1;i<m2;i++)//no of days passed
        {
          ob.leap(y2);
          s3+=a[i];
        }
        s3+=d2;
        s=s1+s2+s3;
        System.out.println("No of days in between"+s)
    }
}

请帮忙。

3 个答案:

答案 0 :(得分:2)

你的程序是一堆错误。首先,您在main方法中调用类变量,而不将它们声明为静态或在构造函数中初始化它们。其次,您正在调用leap(),它是Scanner对象的类方法。这不可能。该程序永远不会编译也不会以这种方式运行。我修改了你的代码,使其可编译和可运行。但有一件事是肯定的。它的逻辑不正确。由于您要计算两个日期之间的天数,因此输出错误。那是你的工作。我删除了它的错误。现在它正在运行。你在这里: -

import java.util.*;  
class yearst
{  

    static int a[]={0,31,28,31,30,31,30,31,30,31,30,31,30}; 

    static int i=1,s,s1=0,s2=0,s3=0,k,diy=365,m,m1,m2,d1,d2,y1,y2,y;

     static void leap(int y)
        {
        if(y%4==0 && y%100!=0 || y%400==0) //for leap year
        {
            a[2]=29;
            diy=366;
        }
         else
         { 
            a[2]=28;
            diy=365;

        }
        }


        public static void main(String args[])
        {
            //i=1;s1=0;s2=0;s3=0;diy=365;

        Scanner ob=new Scanner(System.in);
        System.out.println("Enter the months,dates and years");
        m1=ob.nextInt();
        m2=ob.nextInt();
        d1=ob.nextInt();
        d2=ob.nextInt();
        y1=ob.nextInt();
        y2=ob.nextInt();
        for(i=y1;i<y2;i++)
        {
            leap(i+1);
            m=1*diy;
            s1=s1+m;
        }

        for(i=1;i<m1;i++)//no of days left in y1
        {
            leap(y1);
            s2+=a[i];
        }
        s2+=d1;
        k=diy-s2;
        for(i=1;i<m2;i++)//no of days passed
        {
          leap(y2);
          s3+=a[i];
        }
        s3+=d2;
        s=s1+s2+s3;
        System.out.println("No of days in between"+s);
    }
}

所有最佳:)

答案 1 :(得分:0)

只允许声明方法和静态块。以下可执行语句必须是静态块或构造函数

int i=1,s1=0,s2=0,s3=0,diy=365;

所以,我建议你将代码移到构造函数上。

yearst(){
  i=1;s1=0;s2=0;s3=0;diy=365;
}

答案 2 :(得分:0)

一些事情:

  1. 您需要在构造函数中初始化变量,因为在类中初始化是不允许的

  2. 您是否检查过Java中的ERRORLEVEL类?对于这种情况可能更有用。

  3. 根据惯例,班级名称应以大写字母

  4. 开头