局部变量初始化和开关选择

时间:2016-03-02 12:53:20

标签: java

我是学习java的新手,在这个例子中尝试模拟掷骰子游戏。

当我没有初始化myPoint变量时出现编译器错误,因此我在构造switch之前将其设置为零。

我想了解为什么我需要初始化myPoint变量,当它在声明后在switch中设置为sumOfDice的值时, {{1不同变量?

gameStatus

2 个答案:

答案 0 :(得分:2)

根据Java specification

  

局部变量(§14.4,§14.14)必须在使用前通过初始化(§14.4)或赋值(§15.26)显式赋予值,其方式可以使用明确规则进行验证任务(§16)。

switch语句的rules有效地强制您在switch语句的每个可能的执行路径中初始化变量。

所以答案是:

  • gameStatus变量在每个可能的执行路径中通过switch语句初始化,因此编译器得到满足。
  • 如果例如myPointsumOfDice
  • SEVEN将无法初始化,因此编译器会强制您在交换机块外部初始化变量

答案 1 :(得分:0)

switch-case中,任何路径都会初始化gameStatus变量。

myPoint不是这种情况,因此编译器会抱怨缺少初始化。