解决方案 »

  1.   

    java规定所有使用的变量都要初始化,否则会出现编译期错误。
    i的作用域是在main方法内包含了if代码块,在if里面操作也会改变i的值。
      

  2.   

    java局部变量不会自动初始化,你必须告诉编译器这个变量的初始值。
    你在 if 语句里面给 i 赋了值,但编译器是不知道你的程序是否会跑到 if 语句里面的(只有运行时才知道),所以到 System.out.println(i); 时 i 没有赋过值,编译不通过;
    除非你在 else 里面再给 i 赋值,那边编译器会认为你在 if...else 里面始终会给 i 赋值,所以到 System.out.println(i); 时 i 肯定已经赋过值,编译通过。