【问题标题】:(Java) String declared in an 'if-else' statement cannot be resolved to a variable(Java) 在“if-else”语句中声明的字符串无法解析为变量
【发布时间】:2017-11-19 23:09:14
【问题描述】:

我知道,如果在if-else 语句中声明了变量,它们就会被“包含”在语句中,并且不能在语句之外使用。但是如何在外面声明一个,然后在if-else 内更改它的字符串?

System.out.println("Is it day or night?");
String dayornight = scan.nextLine();

if(dayornight.equals("day")) {
    String brightness = "bright";   

} else if(dayornight.equals("night")) {
    String brightness = "dark";

}
System.out.println("Then it must be " + brightness + " outside." );

}

【问题讨论】:

  • 通过这样做。在外面声明它,在里面修改它的值。答案就在问题中。
  • 变量的范围{ }字符之间最接近其声明的区域。

标签: java string variables if-statement


【解决方案1】:

你需要在外面声明:

String brightness;
if(dayornight.equals("day")) {
    brightness = "bright";   
} else if(dayornight.equals("night")) {
    brightness = "dark";
}

不初始化它是一个好习惯,因为如果有一个可以在不初始化的情况下执行的代码路径,则代码将无法编译(如上面的代码)。在上面的代码中将else if 更改为else 或添加一个else 来处理不是“白天”或“夜晚”的dayornight 将解决问题。

【讨论】:

    【解决方案2】:

    局部变量(在方法中声明的变量)仅存在于最里面的封闭(花括号)中。因此,您创建了两个不同 brightness 变量,每个变量只存在于 if/else 分支之一中。您需要在 if/else 之前声明变量:

    String brightness = "";
    if (dayornight.equals("day")) {
        brightness = "bright";   
    } else if(dayornight.equals("night")) {
        brightness = "dark";
    }
    

    还请注意,由于您没有else,因此您需要在声明变量时对其进行初始化。否则,如果用户输入的不是"day""night",则该变量将没有任何值,并且编译器将不允许这样做。

    【讨论】:

      【解决方案3】:

      这可能是您正在寻找的:

      System.out.println("Is it day or night?");
      String dayornight = scan.nextLine();
      String brightness = "";
      if(dayornight.equals("day")) {
          brightness = "bright";   
      
      } else if(dayornight.equals("night")) {
          brightness = "dark";
      
      }
      System.out.println("Then it must be " + brightness + " outside." );
      

      【讨论】:

        【解决方案4】:

        在 if 块内声明的变量超出了外部范围。所以你需要在块上方声明这些变量。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-26
          • 2013-10-16
          • 2016-01-13
          相关资源
          最近更新 更多