问java达人一道题

本人刚自学java一周,现遇到一题,求教诸位:
   此题原是 电子工业出版社出版的《新电脑课堂系列》—《java编程篇》里第58页里的一题:判断2003年2月有多少天?
本着举一反三的原则,我想将它改为输入一个年份,判断其是否闰年,再判断此年2月有几天?
我的代码如下:
import java.io.*;
public class SwitchTest
{
  public static void main(String args[])
   {
     BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
     String x;
     int year;
     int D;
     try
    {
     System.out.print("请输入一个年份:");
     x=keyin.readLine();
     year=Integer.parseInt(x);
     int month=2;
     switch(month)
       {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
        D=31;  
        break;
        case 4:
        case 6:
        case 9:
        case 11:
        D=30;  
        break;
        case 2:
         if( ( (year%4==0)&&(year%100!=0) )||(year%400==0)  )
           D=29;
         else
           D=28;
           break;
       }
     }
      catch(IOException e) {}
      System.out.println("Number of Days="+D);
    }
}

结果运行Javac SwitchTest.java后,总是出现:
SwitchTest.java:42:variable D might not have been initialized
System.out.println("Number of Days="+D);
                                                        ^
1 error

请各位告诉我 我的问题在哪里?
小弟在此不胜感激?
我也来说两句 查看全部回复

最新回复

  • lwhsy59 (2007-4-29 13:11:27)

    怎么没人理睬我呢?
    我将int D改为int D=0; 就好了
    为什么要int D=0呢?
  • cisumer (2007-5-05 16:48:15)

    你定义int D是在try块外面,而初始化D在try块内,所以在catch块中的D是没有初始化的。