java - switch局部变量编译错误

标签 java switch-statement declaration

为什么会出现编译错误? Java 无法访问 bar 的两个声明。

import java.util.Random;

public class SwitchTest {
  public static void main(String[] args) {
    Random r = new Random();
    int foo = r.nextInt(2);

    switch(foo) {
    case 0:
      int bar = r.nextInt(10);
      System.out.println(bar);
      break;
    case 1:
      int bar = r.nextInt(10) + 10; // Doesn't compile!!
      System.out.println(bar);
      break;
    }
  }
}

最佳答案

它们都在相同的词法范围内,这与执行可达性不同。

在每个 case 内的代码上加上大括号,它就会起作用。

关于java - switch局部变量编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18667055/

相关文章:

javascript - 高级开关盒

objective-c - 何时使用 UIKIT_EXTERN 与仅使用 extern

c - extern 和 static 的正确用法是什么?

python - 在 Python 类声明中调用方法的最佳方式?

java - 当 WEB-INF/lib 和 CLASSPATH 中包含相同的 Jar 时出现类转换异常

java - 优化文件下载

java - 你会在 MySQL 中映射 Java/Hibernate 中的 BigDecimal 什么类型?

按下按钮时 Java 重新绘制

php - 如何在 php 中使用路径信息?

java - Switch 语句给出不兼容的类型错误