一定要的,局部变量一定要初始化。实例变量可以不要初始化,因为java会为变量提供初始值

解决方案 »

  1.   

    java 虽然是会给variable自动设值,但是,它的compiler还是强制developper给每个variable初始值。
    因为你在给c值的时候在一个try里面,所以,到了你后面的if时,程序并不知道c已经是有值的了。所以报错。
    再说了,如果,try失败,action rolled back.c 倒是真的没有值了。
      

  2.   

    这是JAVA的语法规则啊,没有初始化怎么分配内存?
      

  3.   

    hayai(生命树) 说得对,因为你加了try 所以编译的时候认为你的变量有可能没有初始化,所以当你比较的时候有可能为null,所以java 认为这是不安全的,强制它要初始化。你可以在try 中catch 中同时对c 进行初始化。但这样比较傻。
      

  4.   

    因为jdk是不会对成员变量初始化的,而你在调用变量c(if(c=='l')一句)时c有可能没有被付值(比如直接回车),这在编译是通不过的。必须在调用变量之前明确对其付值。比如这样是没问题的:
    package untitled14;
    import java.io.*;
    public class Untitled1 {  public Untitled1() {
      }
      public static void main(String[] args) {
        char c;
         System.out.println("Enter a letter");
         try{
            c=(char)System.in.read();
         }catch(IOException e){c='1';};
         if(c=='l')
            System.out.println("Left");
         else if(c=='r')
            System.out.println("Right");
         else
            System.out.println("Unknown"); 
      }
    }