Java 循环在数组中迭代次数过多
因此,我正在进行一个java项目,该项目将订购商品。然而,在我的代码中,应该迭代一些标记化的术语并将它们分配给自定义项类中的值的代码似乎不起作用。Java 循环在数组中迭代次数过多,java,arrays,loops,for-loop,Java,Arrays,Loops,For Loop,因此,我正在进行一个java项目,该项目将订购商品。然而,在我的代码中,应该迭代一些标记化的术语并将它们分配给自定义项类中的值的代码似乎不起作用。 代码: 当我运行tokenize terms方法并打印itemArray中每个项的值时,我得到一组如下所示的项。 名称:书籍数量:14价格:856.89 名称:书籍数量:14价格:856.89 名称:书籍数量:14价格:856.89 但是,我知道这不应该发生,因为字符串[]tokenizedTerms如下所示: [CD, 32, 459.2, T-S
代码: 当我运行tokenize terms方法并打印itemArray中每个项的值时,我得到一组如下所示的项。
名称:书籍数量:14价格:856.89
名称:书籍数量:14价格:856.89
名称:书籍数量:14价格:856.89
但是,我知道这不应该发生,因为
字符串[]tokenizedTerms
如下所示:[CD, 32, 459.2, T-Shirt, 22, 650.8, Book, 14, 856.89]
问题在于数组的初始化。您在数组中对同一
项实例放置了多个引用:
Item fillItem = new Item();
...
Arrays.fill(itemArray, fillItem);
您应该在数组的每个索引中放置不同的项实例:
for(int i = 0; i < itemArray.length; i++) {
itemArray[i] = new Item ();
}
for(int i=0;i
我这样做只是为了填充数组,这样我就可以在以后的道路上调用setters,而不必获得nullreferenceexception@WillFisher但这是一个错误的初始化。这意味着所有setter调用都会更新相同的项
实例。这就是为什么在数组的所有索引中都会看到相同的值。我明白了你的意思,让它工作起来。真不敢相信这让我难堪了这么久。。。谢谢我会尽可能接受你的回答
Item fillItem = new Item();
...
Arrays.fill(itemArray, fillItem);
for(int i = 0; i < itemArray.length; i++) {
itemArray[i] = new Item ();
}