gpt4 book ai didi

Java - 从二维数组列表读取数据时遇到问题

转载 作者:行者123 更新时间:2023-12-01 12:13:42 26 4
gpt4 key购买 nike

我创建了一个二维数组列表,其中包含不同位置随机生成的数值。

public static int Prices[][] = new int[Cities.length][ItemNames.length];
public static List<int[][]> CityPrices = new ArrayList<int[][]>();
public static void NewDay()
{
for(int i = 0; i<Cities.length; ++i)
{
Prices[i] = PriceGenerator.ReturnPricesForCity(i);
//This method returns an array of random integers
}
CityPrices.add(Prices);
}

但是稍后当我想检索特定商品过去天数的价格历史记录时,它每天都会返回相同的值

int Prices[] = new int[GlobalVariables.CityPrices.size()];
String sTest = "";
for(int i = 0; i < Prices.length; ++i)
{
Prices[i] = GlobalVariables.CityPrices.get(i)[spinCity.getSelectedItemPosition()][spinItem.getSelectedItemPosition()];
sTest = sTest + Prices[i] + ",";
}

在本例中,sTest 返回的值连续五天为:6055,6055,6055,6055,6055。例如,如果我添加一天,这些值将更改为新数字的范围,在本例中为:7294,7294,7294,7294,7294,7294,

请告诉我我做错了什么,因为过去 4 天我一直在试图解决这个问题,但没有成功。

最佳答案

CityPrices 列表中的每个元素都是相同的:在每种情况下,您都添加 Prices 二维数组。您的循环会修改 Prices[i],但不会更改 Prices,它仍然是对同一二维数组的引用。

我认为您想象它将传递当前状态下的数组内容,但事实并非如此:它将数组的引用传递给 .add( ) 方法,因此对数组的任何后续更改都将反射(reflect)在 CityPrices 的内容中。

如果在循环结束时您尝试

CityPrices.get(0) == CityPrices.get(1)

您会看到它返回true

关于Java - 从二维数组列表读取数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com