请问各位高手为什么报错可能尚未初始化变量b,但是我怎么觉的在if语句块内b肯定被初始化了,请各位指点我一下class TestPrime
{
  public static boolean isPrime(int x)
  {
boolean b;
    for (int i = 2; i <= 15; i++)
    {
      if(x % i == 0)
      {
        b = false;
      }
      else
      {
b = true;
      }
    }
    return b;
  }
}

解决方案 »

  1.   

    boolean b = false; 
      

  2.   

    变量值没有初始化(b)所以要报错拉在java中,任何变量都要初始化,但如果是成员(属性)那就不要了因为,在调用构造器的时候,它会自己初始化自己
      

  3.   

    1.方法内的变量值,也就是局部变量.需要初始化
    2.楼上所说的类的数据成员,确实不用,因为他们有初始值,如果是对象引用的话,也就是
    class a{
     a(i){
    ........
         }
    }
    public class b{
    a XX=new a(1);
    ....
    }                    也就是构造器帮助初始化..这跟局部变量是不一个概念的.. 不明白在问啊.
      

  4.   

    你觉得肯定进入循环了,编译器不是这么认为的。
    boolean flag = false;
    并不等价于:
    boolean flag;
    if(true) flag = false;
      

  5.   

    如果是全局变量:就是属性,可是不给初值!
    如果是在方法里面就一定要给初值!
    public static void main(String[]args){ }

        public static boolean isPrime(int   x) 
        {
    boolean   b=false; 
            for   (int   i   =   2;   i   <=   15;   i++) 
            {
                if(x   %   i   ==   0) 
                    b   =   false; 
                else 
    b   =   true; 
            } 
            return b;
        }