2014-11-25 2 views
0

다른 위치에 대해 임의로 생성 된 숫자 값이 들어있는 2D 배열 목록을 만들었습니다.Java - 2D 배열 목록에서 데이터를 읽는 데 문제가 있습니다.

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가 반환 한 값은 60556055605560556055이며 연속 5 일 동안입니다. 예를 들어 하루를 추가하면 값이 새로운 숫자 범위로 변경됩니다 (이 경우 7294,7294,7294,7294,7294,7294,

) 내가 지난 4 일간 운이없는 것을 알아 내려고 노력하면서, 잘못하고있다.

+1

이 문제는 임의 값을 생성하는 방법에있을 수 있습니다. – jhamon

+0

난수 생성 방법 코드를 게시 할 수 있습니까? 의사 랜덤 넘버 생성기와 관련이있는 것처럼 보입니다. – RockOnRockOut

+0

또한 2D 배열을 오용하고있을 수 있습니다. – jhamon

답변

1

CityPrices 목록의 모든 요소는 동일합니다. 각 경우에 Prices 2 차원 배열을 추가하고 있습니다. 루프가 Prices[i]을 수정하지만 Prices은 변경되지 않습니다.이 배열은 여전히 ​​동일한 2 차원 배열에 대한 참조입니다.

나는 당신이 현재 상태로 배열의 내용을 전달합니다 상상하고 생각하지만 그렇지 않습니다 : 그것은 .add() 방법으로 배열에 참조를 전달하므로 배열에 대한 후속 변경 CityPrices의 내용에 반영됩니다. 루프의 끝에서 당신이

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

을하려고하면

당신은 true을 돌려 볼 수 있습니다.

+0

Hehe 감사합니다. 나는 결국 그와 같은 것으로 생각했지만, 내가 무엇을 알지 못하기 때문에 그것을 믿고 싶지 않았습니다. 대신 할. 나는 최근에 그것을 결정하고 2D 배열에 포함 된 모든 항목에 대한 목록을 만들었지 만 몇 시간이 걸렸지 만 적어도 이제는 모든 것이 잘 작동하고 있습니다 ... – Christian

+0

@Christian glad you it it work :) –

0

할당에서 : Prices[i] = GlobalVariables.CityPrices.get(i)[spinCity.getSelectedItemPosition()][spinItem.getSelectedItemPosition()]; 기본적으로 두 치수 모두 동일한 색인에서 int[][]을 참조합니다.

그 외에도 루프의 반복마다 동일 색인이 반환되므로 동일한 값이 반환 될 수 있습니다.

spinCity 코드를 게시하지 않았으므로 더 이상 추측하기가 어렵습니다.

+0

안녕하십니까 제안을 주셔서 감사합니다, spincity은 기본 구성 요소 인 안드로이드에 대한 드롭 다운 목록 인 인터페이스에서 생성 된 회 전자를 참조하며,이 메서드는 현재 선택된 항목의 인덱스에 대한 정수 값을 반환하며 그 동안 매번 같은 인덱스를 반환해야합니다. 루프를 변경하고자하는 유일한 것입니다. 목록에서 검색 한 배열이되어야합니다. – Christian

관련 문제