我对java int数组初始化有疑问。我想根据条件设置宽度,但是当我尝试编译时显示格式错误的声明。我的数组初始化有什么问题吗?

int []widths;
if(condition 1)
{
   widths = {1,4,5,3};
}

if(condition 2)
{
   widths = {1,9,5,3,2};
}

method1.setWidth(widths );  //method that take int array as argument.

最佳答案

widths = {1,4,5,3}仅当它是数组变量的声明的一部分时才有效。

将您的代码更改为:

int[] widths;
if(condition 1) {
   widths = new int[] {1,4,5,3};
}

if(condition 2) {
   widths = new int[] {1,9,5,3,2};
}

method1.setWidth(widths);


如果两个条件都不为真,则还应考虑为widths数组提供默认值,否则代码将无法通过编译。

可能是这样的:

int[] widths = null;
if(condition 1) {
   widths = new int[] {1,4,5,3};
}

if(condition 2) {
   widths = new int[] {1,9,5,3,2};
}

if (widths != null) {
    method1.setWidth(widths);
}

08-04 04:47