Java函数用数组初始化器报Array constants can only be used in initializers错如何解决
报错原因
Array constants can only be used in initializers 报错的核心原因是Java语法规定:{...} 格式的数组常量仅支持在声明数组变量的同时完成初始化操作,不可在后续对已声明的数组变量单独赋值时直接使用该写法。
修复方案
你只需要在赋值数组的时候补全 new int[] 声明即可。同时你原来代码中提前创建的 new int[5] 属于无效创建,后续赋值会直接覆盖该数组对象,属于冗余代码可以删除,修正后的完整代码如下:
public class ArrayExample{ public static void main(String args[]){ int number = 0; int[] newArray = getValues(number); } public static int[] getValues(int number) { int[] testArray; if(number == 0) { testArray = new int[]{1,2,3,4,5}; } else if(number == 1) { testArray = new int[]{2,3,4,5,6}; } else if(number == 2) { testArray = new int[]{3,4,5,6,7}; } else if(number == 3) { testArray = new int[]{4,5,6,7,8}; } else{ testArray = new int[]{5,6,7,8,9}; } return testArray; } }
可选优化方案
你当前的数组取值逻辑符合固定偏移规律,也可以直接通过循环生成,减少重复代码:
public static int[] getValues(int number) { int[] testArray = new int[5]; int start = number + 1; for (int i = 0; i < 5; i++) { testArray[i] = start + i; } return testArray; }
内容的提问来源于stack exchange,提问作者user6210457
相关产品推荐
相关产品推荐

