我做了个输入日期,然后计算距离1月1号过了多少天的JAVA代码,求会JAVA的网友帮我看看哪里错了

我做了个输入日期,然后计算距离1月1号过了多少天的JAVA代码,求会JAVA的网友帮我看看哪里错了import java.util.Scanner;
public class DayOfYear
{
int month;
DayOfYear()
{
System.out.println("输入月份:");
Scanner input=new Scanner(System.in);
month=input.nextInt();
input.close();
}
int abc()
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
return 28;
break;
}
return 0;
}
int def()
{
System.out.println("输入日:");
Scanner inp=new Scanner(System.in);
int day=inp.nextInt();
inp.close();
int a=0;
month--;
for(;month>0;month--)
{
a+=abc();
}
return day+a-1;
}
public static void main(String[] args)
{
DayOfYear p1=new DayOfYear();
int b=p1.def();
System.out.println("距离1月1日已过:");
System.out.println(b);
}
}

第一,你没有考虑平年闰年的问题,闰年二月有29天
第二,你的break放在return之后,java编译器会报错,看你写代码这么绕,java基础应该不差啊,那么问你,return之后的语句有意义吗?
第三,打印流在整个类中的使用中如果关闭一次,下次就无法打开,所以最后再关闭打印流,在输入月份的时候不要关闭打印流,就你的input.close()去掉,完了就对了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-23
计算距离2018年1月1号过了多少天答案如下:
import java.util.Scanner; public class Day { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("输入年份:"); int year=input.nextInt(); System.out.println("输入月份:"); int month=input.nextInt(); int sum=0; for(int i=2018;i<year;i++) { if((i%4==0&&i%100!=0)||(i%400==0)) { sum+=366; } else { sum+=365; } } for(int i=1;i<=month;i++) { if(i==1||i==3||i==5||i==7||i==8) { sum+=31; } else if(i==2) { if(year%4==0&&year%100!=0||year%400==0) { sum+=29; } else { sum+=28; } } else { sum+=30; } } System.out.println("距离2018年1月1日的天数是:"+sum); } }
第2个回答  2018-03-23
public class DayOfYear {
int month;
DayOfYear(){
System.out.println("输入月份:");
Scanner input=new Scanner(System.in);
month=input.nextInt();

}
int abc()
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;

case 4:
case 6:
case 9:
case 11:
return 30;

case 2:
return 28;

}
return 0;
}
int def()
{
System.out.println("输入日:");
Scanner inp=new Scanner(System.in);
int day=inp.nextInt();
inp.close();
int a=0;
month--;
for(;month>0;month--)
{
a+=abc();
}
return day+a-1;
}
public static void main(String[] args)
{
DayOfYear p1=new DayOfYear();
int b=p1.def();
System.out.println("距离1月1日已过:");
System.out.println(b);
}

}
//我改了你的代码,你试下追问

我现在没电脑,等我拿到电脑试一下,可以就采纳。谢谢。

追答

建议你用myeclipse编程,有些问题可以给你提示出来的

本回答被提问者采纳
第3个回答  2018-03-23
ئۇيغۇرچە يېزىڭلار