作者awpadam (adam!)
看板java
标题[问题] 一题跟变数初始化有关的问题
时间Sat Jul 25 21:33:15 2020
public class Test {
static int result;
public static void main(String[] args) {
double x ;
if( result == 0 ){
x = 10.0;
System.out.println("123");
}
System.out.print(x);
}
}
最後要印出x的值的时候会出现编译错误
说 x 没有初始化
一开始我怀疑if没有进入
所以print 123
结果有印出123,表示有进入
然後我把if的条件直接改成true就可以印出x
请问这是什麽原因呢?
先谢谢各位高手的帮忙~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.177.13.6 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1595683997.A.969.html
1F:推 PTTTTTTTT: local variable 没有初始值 只有class variable有 07/25 21:41
但是我在if里面有给值了呀
※ 编辑: awpadam (180.177.13.6 台湾), 07/25/2020 21:48:37
2F:→ gasbomb: 你加个else {x = 0.0} 应该就会过了 07/25 22:05
3F:→ gasbomb: 编译器只要抓到区域变数有可能尚未初始化就不会让你过 07/25 22:09
4F:→ gasbomb: 以你的例子来说 万一 result != 0, x 就不会初始化 07/25 22:11
原来如此,我了解了。谢谢你的帮忙
※ 编辑: awpadam (180.177.13.6 台湾), 07/25/2020 22:14:35
5F:→ ssccg: 必须是所有路径都有初始化才叫有初始化 07/25 22:16
你的意思是说所有的分支条件吗?
※ 编辑: awpadam (180.177.13.6 台湾), 07/25/2020 22:17:58
6F:→ swallowcc: 那问你个问题,如果你的 result 不等於零, 你期望double 07/25 22:44
7F:→ swallowcc: 会印出来什麽东西呢? 07/25 22:44
8F:→ swallowcc: x才对,不是double,用错词。 07/25 22:45
我没想到java的编译器这麽严格,会帮我考虑其他状况
蛮贴心的XD
※ 编辑: awpadam (180.177.13.6 台湾), 07/25/2020 22:58:11