读书人

大侠们 帮小弟我解释下 尤其是for循环

发布时间: 2011-12-18 22:54:38 作者: rapoo

大侠们 帮我解释下 尤其是for循环里的
/*编写一个java 程序,输入一个年月日,输出该日期是当年的第几天(注意考虑到闰年)?*/
import java.io.*;
public class Tian{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println( "请输入一个年份: ");
String str=bf.readLine();
int a=Integer.parseInt(str);
System.out.println( "请输入一个月份: ");
String str1=bf.readLine();
int b=Integer.parseInt(str1);
System.out.println( "请输入一个日期: ");
String str2=bf.readLine();
int c=Integer.parseInt(str2);
for(int i=1;i <b;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:c+=31;break;
case 4:
case 6:
case 9:
case 11:c+=30;break;
case 2:c+=28;break;
}

}
if(((a%4==0&&a%100!=0)||a%400==0)&&b> 2)
c+=1;
System.out.println( "是本年的第= "+c);
}
}

[解决办法]
大月,小月....
2月..28天
case如果没有break,就不会跳出,继续检测下一个case
"full-through "
[解决办法]
计算到指定月的天数
[解决办法]
哎 JAVA API 有现成的直接用就可以了,干嘛这么麻烦啊
[解决办法]
如果真正要自己实现,也应该用查表法来做。

[解决办法]
用更面向对象一点的方法吧

输入是年 月 日 首先得有一个单参方法判断该是平年还是闰年 isLeapYear(int year) 具体实现不多写了 网上很多的
其次再设计一个根据月份判断当月天数的方法 双参
int getDaysOfMonth(int year, int month){
int days;
switch(month){
case 1:
days=31;
case 2:
if(isLeapYear(year)){


days=29;
}
else{
days=28;
}
case 3:
...
}
return days;
}


至于最后的求和计算就是在一个for循环里完成了
int sum=0;
for(int i=1; i <month; i++){
sum+=getDaysOfMonth(year,i);
}
sum+=day;

最后求得的sum就是当年的第几天
[解决办法]
for(int i=1;i <b;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: c+=31;break;
case 4:
case 6:
case 9:
case 11:c+=30;break;
case 2:c+=28;break;
}
实际上这里用了switch....case的一个技巧,一般case语句后面都要跟break,此处直接到case 12的时候才有Break,表示是不是1,3,5,7,8,10,12都执行c+=31 而4,6,9,11都执行c+=30,
则可以省很多的代码!
[解决办法]
很简单吧,建议直接使用char[]屏幕输入,然后再读屏幕的输入进行判断

读书人网 >J2SE开发

热点推荐