【问题标题】:Dynamically initialise array name动态初始化数组名
【发布时间】:2019-04-29 21:23:23
【问题描述】:

我正在尝试在此数组中创建一个包含 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();    
    }
}

【问题讨论】:

  • 你打算如何处理这些数组?如果我理解正确,您想动态命名变量,这是无法完成的

标签: java


【解决方案1】:

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

你应该创建一个List&lt;ShoppingBag&gt;类型的变量:

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

每次您需要一个新的购物袋时:

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

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

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

【讨论】:

  • toArray() 应该是toArray(new ShoppingBag[0])
  • 你完全正确 Lino,我更新了答案。谢谢。
【解决方案2】:

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

您可以做些什么:使用 Map,或者更简单:一个数组数组来保存您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2016-06-13
    • 1970-01-01
    • 2020-12-04
    • 2013-04-11
    • 1970-01-01
    相关资源
    最近更新 更多