public class TestC {
public static void main(String[] args) {
int i;
for(int j=0; j<3; j++) {
i=1;
}
System.out.println(i);
}
}
运行的时候会出现可能尚未未初始化变量i。如果是自变量的作用域问题,可是我的 i 是定义在for外面啊,所以请问下到底是什么原因呢,谢谢

解决方案 »

  1.   

    就是你的i未初始化啊,java要求变量在使用前需要先chu初始化  即你可以定义  int i = 2;
      

  2.   

    可是我已经在for循环语句里初始化了为什么不行呢
      

  3.   

    因为机器不如人脑,Java自己会觉得j有可能小于3也有可能大于3,当大于3的话就进不了for循环了,那样的话i就没附初值直接输出,所以报错
      

  4.   

    编译器又不知道for循环的代码会执行
      

  5.   

    楼主要学会贴代码public class Demo {
        public static void main(String[] args) {
            if (args.length == 0) {
                System.out.println("no args.");
            }
        }
    }像楼主的代码层级多,又没有排版,没法看。
      

  6.   

    你给i赋值的语句是在for循环体里面的,循环体跟你最后输出i是不同的作用域,所以最后的输出语句在编译阶段是感知不到你给i赋值了的。
      

  7.   

    在你运行前,程序是不会知道你到底有没有进到循环里面的,虽然你肉眼看到了j<3一定会进循环,但机器是不会这么看的。
      

  8.   

    for循环中的变量都要有初始化值的,因为for循环不是一个绝对的条件,java会认为也可能进不去循环,这时候i没法赋值,就会导致编译出错,这算是语法错误吧。写多了就习惯默认赋值了