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();
}
}
解决方案
您将无法在 java 中动态创建新变量。当我查看您的方法的签名时,您不需要返回多个变量,只需返回一个 ShoppingBags 数组。
您应该创建一个类型的变量List<ShoppingBag>
:
List<ShoppingBag> shoppingsBags=new ArrayList<>();
每次您需要一个新的 ShoppingBag 时:
bag=new ShoppingBag();
shoppingBags.add(bag);
最后将此列表转换为数组:
return shoppingBags.toArray(new ShoppingBag[0]);
推荐阅读
- c - 在函数中使用指针的临时值
- xml - 如何通过命令行或使用 python/perl/sed/awk 从 pom.xml 中删除特定元素?
- html - Svg 动画未在 Safari 上运行
- c# - 有没有办法使用 c# 增加 POS 打印机的字体大小?
- android - 将数据从 Activity 发送到 Fragment - 如何?
- ruby-on-rails - 在 Rails 中使用 js.erb
- java - 再次将 StringIndexer 转换为 String。Apache Spark MLlib
- android - Cardview 不会改变我当前的活动(意图不起作用)
- android - 是否可以从谷歌地图中隐藏所有默认标记,例如餐厅、公园
- c# - 使用 NUnit.Console-3.8.0 作为目标可执行文件运行 dotcover 会引发异常