我想根据条件声明一个特定大小的数组,但是Eclipse给了我一个错误。这是我的条件:
if ( (a.length == b.length) && (a[maxlength - 1] + b[maxlength - 1] >= 10)) int[] c = new int[maxlength + 1]; else int[] c = new int[maxlength];
我在两个数组声明的行上都出现以下错误:
为什么这不起作用?是否有其他方法可以实现相同的目标?
答案 0 :(得分:9)
这是由于块级范围。 c
仅在块的范围内已知。因此,在c
块和if
块中已知else
,但请注意c
和{{1}内的if
} c
内部是不同的。一旦控制退出任一块(因为它在任何时间只能在其中一个块中),对else
的引用就会丢失。
如果您希望c
在块之外可用,则应在外部声明:
c
我还建议在int[] c;
if ( (a.length == b.length) && (a[maxlength - 1] + b[maxlength - 1] >= 10)) {
c = new int[maxlength + 1];
} else {
c = new int[maxlength];
}
和if
中使用大括号,因为否则只执行后续语句,如果不小心,可能会导致细微的错误。
答案 1 :(得分:2)
尝试:
int[] c;
if ( (a.length == b.length) && (a[maxlength - 1] + b[maxlength - 1] >= 10))
c = new int[maxlength + 1];
else
c = new int[maxlength];
然后您可以使用c
。