条件数组声明

时间:2013-12-04 16:14:21

标签: java arrays

我想根据条件声明一个特定大小的数组,但是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];

我在两个数组声明的行上都出现以下错误:

  • “c无法解析为变量”
  • “令牌上的语法错误,错位的构造”

为什么这不起作用?是否有其他方法可以实现相同的目标?

2 个答案:

答案 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