日期:2014-05-20  浏览次数:20708 次

我是小菜,有个小问题想请教一下大家
这是一个计算相隔两年间天数的代码:
import java.util.Scanner;
public class tianshu{
public static void main(String[] args){
Scanner A=new Scanner(System.in);
System.out.println("从哪一年开始:");
int a;
Scanner B=new Scanner(System.in);
System.out.println("从哪一年开始");
int b;
int day=0;
for(a=A.nextInt(),b=B.nextInt();a<=b;a++){
if(a%4==0&&a%100!=0||a%400==0){
day=day+366;
}else{
day=day+365;
}
}
System.out.println("总天数为:"+day+"天");
}
}

代码基本上没问题,有几个问题大家可以告诉我吗?如下:
1.代码运行后,是这样的:
从哪一年开始:
从哪一年开始:
(让你输入第一个年份)
(让你输入第二个年份)
(结果)。。。。。。
那么怎样才可以变成这样呢?
从哪一年开始:
(让你输入第一个年份)
从哪一年开始:
(让你输入第二个年份)
(结果)。。。。。。
2.for语句当中的day不是局部变量吗?但是为什么再循环之后,可以被输出呢?
即“System.out.println("总天数为:"+day+"天");"这一句.
------解决方案--------------------

public static void main(String[] args){
        Scanner A=new Scanner(System.in);
        System.out.println("从哪一年开始:");
        int a = A.nextInt();
        Scanner B=new Scanner(System.in);
        System.out.println("从哪一年结束");
        int b = B.nextInt();
        int day=0;
        for(;a<=b;a++){
            if(a%4==0&&a%100!=0
------解决方案--------------------
a%400==0){
                day=day+366;
            }else{
                day=day+365;
            }
        }
        System.out.println("总天数为:"+day+"天");
    }

day 在for循环外面定义的,所以在后面还可以访问到
------解决方案--------------------
public static void main(String[] args) {
        System.out.println("从哪一年开始:");
        Scanner A = new Scanner(System.in);
        int a = A.nextInt();
        System.out.println("从哪一年开始");
        Scanner B = new Scanner(System.in);
        int b = B.nextInt();
        int day = 0;
        for (int i = a; i <= b; i++) {
            if (i % 4 == 0 && i % 100 != 0 
------解决方案--------------------
 i % 400 == 0) {
                day = day + 366;
            } else {
                day = day + 365;
            }
        }
        System.out.println("总天数为:" + day + "天");
    }