Java 条件数组去伸缩

Java 条件数组去伸缩,java,arrays,Java,Arrays,我想根据条件声明一个特定大小的数组,但Eclipse给了我一个错误。这是我的if条件: 我在两个数组声明的行上都出现以下错误: c不能解析为变量 令牌上的语法错误,错误放置的构造 为什么这不起作用?是否有其他方法可以实现相同的目标?这是由于区块级别的范围界定。c仅在块的范围内已知。因此,if块和else块中的c是已知的,但也要记住if块中的c和else块中的c是不同的。一旦控件退出任何一个块,因为它在任何时候都只能在其中一个块中,对c的引用就会丢失 如果希望c在块外部可用,则应在以下外部声明:

我想根据条件声明一个特定大小的数组,但Eclipse给了我一个错误。这是我的if条件:

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

c不能解析为变量 令牌上的语法错误,错误放置的构造
为什么这不起作用?是否有其他方法可以实现相同的目标?

这是由于区块级别的范围界定。c仅在块的范围内已知。因此,if块和else块中的c是已知的,但也要记住if块中的c和else块中的c是不同的。一旦控件退出任何一个块,因为它在任何时候都只能在其中一个块中,对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和else中使用大括号,因为否则只执行后续语句,如果不小心,可能会导致细微的错误。

尝试:

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

int[] c;
if ( (a.length == b.length) && (a[maxlength - 1] + b[maxlength - 1] >= 10))
    c = new int[maxlength + 1];
else
    c = new int[maxlength];