相关疑难解决方法(0)

开关盒中的变量范围

我想我不明白示波器如何在开关盒中工作.

有人可以向我解释为什么第一个代码不编译但第二个代码没有编译?

代码1:

 int key = 2;
 switch (key) {
 case 1:
      String str = "1";
      return str;
 case 2:
      String str = "2"; // duplicate declaration of "str" according to Eclipse.
      return str;
 }
Run Code Online (Sandbox Code Playgroud)

代码2:

 int key = 2;
 if (key == 1) {
      String str = "1";
      return str;
 } else if (key == 2) {
      String str = "2";
      return str;
 }
Run Code Online (Sandbox Code Playgroud)

为什么变量"str"的范围不包含在案例1中?

如果我跳过案例1的声明,则永远不会声明变量"str"...

java switch-statement

91
推荐指数
3
解决办法
3万
查看次数

switch语句中的重复局部变量

我使用Eclipse收到此错误.

重复的局部变量斗篷

我真的不明白为什么我会遇到这样的错误.这是我的代码:

switch (frame) {  // frame is an integer
case 0:
    Sprite cape = modules.get(Module.CAPE);
    //cape.setRegion(region);
    cape.translateY(+1);
    break;
case 1:
    Sprite cape = modules.get(Module.CAPE);
    //cape.setRegion(region);
    cape.translateY(-1);
    break;
default:
    throw new IllegalArgumentException(
            "Undefined frame number: " + frame);
}
Run Code Online (Sandbox Code Playgroud)

为什么cape变量对于每种情况都是本地的,而不是switch语句?

java eclipse switch-statement

6
推荐指数
3
解决办法
3588
查看次数

switch case语句中的java范围声明如何?

以下Java代码在Java 1.7中无错误地执行

public static void main(String[] args) {
    int x = 5;

    switch(x) {
        case 4: 
            int y = 3423432;
            break;  
        case 5: {
            y = 33;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java如何确定y是一个int,因为声明永远不会运行.在case语句中没有使用大括号时,case语句中的变量声明是否限定为switch语句级别?

java switch-statement

6
推荐指数
1
解决办法
354
查看次数

为什么switch语句中的case没有自己的范围?

考虑以下代码:

int num = 0;

switch(num) {
   case 1:
      boolean bool = false;
      break;
   case 2:
      String one;
      String two;
      String three;
      //..simulating lots of vars
      break;
   default:
      bool = true;
      System.out.println(bool);
      break;
}
Run Code Online (Sandbox Code Playgroud)

由于我们被允许引用在另一个案例中声明的变量,这意味着即使case 1未被选中,boolean bool仍然被声明.

既然default是最后一个选项,并且java从左到右(从上到下)工作,我假设case 2也会声明(和任何其他情况)中的变量.

这使我认为,在选择案例之前声明的案例中,您所拥有的代码越多,实际访问该案例所需的时间与首先声明所选案例的时间相比就越.

切换语句是否有特定原因以这种方式工作?if-else如果有很多情况,最好不要使用而不是切换语句?(谈论处理时间,纳秒)

java switch-statement micro-optimization

5
推荐指数
1
解决办法
643
查看次数