【问题标题】:Variable declaration not allowed. But there is no scope overlap [closed]不允许变量声明。但是没有范围重叠[关闭]
【发布时间】:2016-08-04 18:35:26
【问题描述】:

当我填充一个字符数组时,我得到一个错误。

     List<Character> letters = new ArrayList<>();
     int i = 0;
     if (i == 0) {
         Character str = 'a';
         letters.add(str);
     } else if (i == 1)
         Character str = 'b'; //Variable declaration not allowed here
         letters.add(str);
     }

为什么会出现此错误消息?情况 i==0 和 i==1 是相互的 独家的。为什么编译器不允许我第二次 decare str?

【问题讨论】:

  • 您在else if 之后缺少{
  • 我投票决定将此问题作为题外话结束,因为这是一个简单的印刷错误
  • 我投票保留它,因为错误信息类似于stackoverflow.com/questions/31230722/…(尚未关闭),但原因却大不相同。
  • 为什么要在每个 if 块中创建“str”变量。创建一次并在每次需要时对其进行初始化。创建新变量需要更多资源。
  • 我尽量缩小变量的范围。

标签: java scope


【解决方案1】:

范围不重叠,这是正确的。您忘记了else if 行的左大括号。这只是一个看起来像的错字

} else if (i == 1){ 解决了一个问题。

你的情况与JAVA Variable declaration not allowed here明显不同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多