当前位置: 代码迷 >> J2SE >> java 请问the local variable may not have been initialized有关问题
  详细解决方案

java 请问the local variable may not have been initialized有关问题

热度:474   发布时间:2016-04-23 19:55:41.0
java 请教the local variable may not have been initialized问题
我准备写一个根据用户输入年份和月份打印出来当月的日历的代码,写了一半,编译的时候提示d2变量没有初始化the local variable b2 may not have been initialized.但是我在下面的for循环里面已经给d2赋值了呀,难道还要在申明b2的时候给他初始化一个值吗?d这个变量都没有初始化也没提示错误呀,请教各位前辈!不胜感激!

package com.dean;

import java.util.Scanner;

public class Calendar {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);

int d;//存放1900年到year-1这么多年里面一共有多少天
int d2;//存放从year/1/1号到year/month/1这段时间一共有多少天
int i=0;//闰年计数器
int k;//k存放(d+d2)%7的值,对应的数值从0-6分别对应周日,周一,周二...到周六)

System.out.println("input the year:");
int year = s.nextInt();

System.out.println("input the month:");
int month = s.nextInt();

for (int n = 1900; n < year; n++) {
if ((n % 4 == 0) && (n % 100 != 0) || (n % 400 == 0))
i += 1;
}

d= (year-1900)*365+i;

for(int j=1;j<month;j++){
if (j==4 || j==6 || j==9 || j==11){
d2=30;
}else if(j==2){
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)){
d2=29;
}
d2=28;
}else{
d2=31;
}
}

d=d+d2;

d++;

k= d%7;

System.out.println("Mon.\t"+"Tue.\t"+"Wed。\t"+"Thu\t"+"Fri.\t"+"Sat.\t"+"Sun.");


}

}
------解决思路----------------------
你确实在for循环中给d2赋值了,但是,循环体并不是一定会执行,如果不执行,d2就没有初始化,而d在for循环外就被赋值了,所以,编译器要求你初始化d2。
  相关解决方案