关于一个boolean型的初始化
import java.util.Random;
public class Holder{
public static void f(boolean b) throws Exception{
System.out.println( "Kobe ");
if(b)
throw new Exception( "Error from f() ");
}
public static void main(String[] args) throws Throwable{
try{
Random rand=new Random();
int a=rand.nextInt(2);
boolean c;//我这里没有初始化,但下面根据来初
//始化了,但是却不能被编译,说是c没
//有被初始化,这是怎么回事?
switch(a){
case 0:
c=true;
break;
case 1:
c=false;
break;
default:
System.out.print( "Bryant ");
}
f(c);
}catch(Exception e){
System.err.println( "f() Error! ");
e.printStackTrace();
}
}
}
------解决方案--------------------因为下面的分支可能都没有运行到,那时候就不知道c是什么了
你直接给c一个true或者false的初始值就好
------解决方案--------------------这种情况是java为了提高程序的安全性做的检查,楼上的说得有道理,因为你所用到的c这个变量,在声名的时候没有初使化,下面使用到的地方全是在分支语句里,但有可能所有分支都不会运行,所以就会报错了.