问题是找到两个日期之间的天数.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)
}
}
请帮忙。
答案 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)
一些事情:
您需要在构造函数中初始化变量,因为在类中初始化是不允许的
您是否检查过Java中的ERRORLEVEL
类?对于这种情况可能更有用。
根据惯例,班级名称应以大写字母