Java 不允许使用变量声明。但没有范围重叠

Java 不允许使用变量声明。但没有范围重叠,java,scope,Java,Scope,当我填充一个字符数组时,我得到一个错误 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

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

     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);
     }
List letters=new ArrayList();
int i=0;
如果(i==0){
字符str='a';
添加字母(str);
}else如果(i==1)
字符str='b'//此处不允许使用变量声明
添加字母(str);
}
为什么会出现此错误消息?情况i==0和i==1是相互关联的
独家为什么编译器不允许我第二次对str进行decare?

范围不重叠,这是正确的。您忘记了在
else if
行中有一个开头的花括号。这只是一个看起来像

}如果(i==1){
修复了一个问题


你的情况明显不同于你的
{
在你的
else if
之后丢失了
{
。我投票将这个问题作为离题题题结束,因为它是一个简单的印刷错误。我投票保留它,因为错误消息类似于(尚未结束),但原因非常不同。你为什么创建“str”变量每个if块。创建一次并在每次需要时初始化它。创建新的变量需要更多的资源。我尽量使变量的作用域更小。