我是学习java的新手,在这个例子中尝试模拟掷骰子游戏。
当我没有初始化myPoint
变量时出现编译器错误,因此我在构造switch
之前将其设置为零。
我想了解为什么我需要初始化myPoint
变量,当它在声明后在switch中设置为sumOfDice
的值时,与 {{1不同变量?
gameStatus
答案 0 :(得分:2)
局部变量(§14.4,§14.14)必须在使用前通过初始化(§14.4)或赋值(§15.26)显式赋予值,其方式可以使用明确规则进行验证任务(§16)。
switch语句的rules有效地强制您在switch语句的每个可能的执行路径中初始化变量。
所以答案是:
gameStatus
变量在每个可能的执行路径中通过switch语句初始化,因此编译器得到满足。 myPoint
为sumOfDice
,SEVEN
将无法初始化,因此编译器会强制您在交换机块外部初始化变量答案 1 :(得分:0)
在switch-case
中,任何路径都会初始化gameStatus
变量。
myPoint
不是这种情况,因此编译器会抱怨缺少初始化。