关于一个boolean型的初始化

weiqiyiji 2007-06-23 07:12:30
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();
}
}
}
...全文
423 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyu622 2007-06-24
  • 打赏
  • 举报
回复
这种情况是java为了提高程序的安全性做的检查,楼上的说得有道理,因为你所用到的c这个变量,在声名的时候没有初使化,下面使用到的地方全是在分支语句里,但有可能所有分支都不会运行,所以就会报错了.
kingofvc 2007-06-23
  • 打赏
  • 举报
回复
针对我说的“下面的分支可能都没有运行到”并不是指你现在的代码,而是说编译器认为有这种情况出现
kingofvc 2007-06-23
  • 打赏
  • 举报
回复
因为下面的分支可能都没有运行到,那时候就不知道c是什么了
你直接给c一个true或者false的初始值就好

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧