动态初始化数组名称

时间:2019-04-29 12:34:50

标签: java

我试图用MAX_N 6个对象创建一个对象数组,然后在else语句中创建另一个数组以适合其余数组对象。

我想命名新数组

sbag1
sbag2
etc

这是我的代码:

public static ShoppingBag[] packIntoBags(GroceryItem[] goods) {

    ShoppingBag newBag = new ShoppingBag();
    GroceryItem tmpObject = null;
    int index = 0;
    String bag = "newBag";
    String bagNum = bag + index;

    for (int i = 0; i < MAXNBAG; i++)
        if (newBag.numItems() < MAX_NUM_ITEMS) {    
            for (int k = 0; i < MAX_NUM_ITEMS; i++) {
                tmpObject = goods[i];
                newBag.addToBag(tmpObject);
            }
        }
    else {
        ShoppingBag newBag1 = new ShoppingBag();    
    }
}

2 个答案:

答案 0 :(得分:3)

您将无法在Java中动态创建新变量。 当我查看您方法的签名时,您无需返回多个变量,只需返回一个ShoppingBags数组即可。

您应该创建List<ShoppingBag>类型的变量:

List<ShoppingBag> shoppingsBags=new ArrayList<>();

每次您都需要一个新的ShoppingBag:

bag=new ShoppingBag();
shoppingBags.add(bag);

最后将此列表转换为数组:

return shoppingBags.toArray(new ShoppingBag[0]);

答案 1 :(得分:2)

Java是静态编译的语言。通常,这是不可能的,或者确切地说是:对变量使用“动态”名称没有帮助。

您可以做的是:使用地图,或更简单的方法:使用数组数组保存数据。