2014-10-12 23 views
0

對於這個問題的糟糕措辭,我很抱歉,但這是我能想到問這個問題的最好方法。Java - 生成一系列可能的座標

我已經初始化一個Hashmap(hm),我想用它來存儲一些名爲LandPlots的對象,這些對象在被調用時需要x和y座標。

例子:

hm.put(new LandPlot(0,0),0);將建立在 '0,0'

hm.put(new LandPlot(0,1),1);一個LandPlot將建立在 '0,1'

一個LandPlot我想用一個循環來做到這一點去創建足夠的'LandPlot'對象來填充一個8x6'遊戲板'。

我試着用下面的循環這樣做:

for (x = 0; x < 9; x++) { 
     for (y = 0; y < 7; y++) { 
      hm.put(new LandPlot(x, y), i); 
      System.out.println(hm.values()); 
      i++; 
     } 
    } 

(其中 'X', 'Y' 和 'I' 都被初始化爲0)

現在,我有兩件事:

1)我後來應該是愚蠢的簡單;我確信我之前用Jython做過一些類似於循環的圖片操作,但是我不能記住一個術語來正確地描述它,因此很難找到我在網上尋找的信息。

2)我對Hashmaps非常陌生,我懷疑hm.values()是快速顯示它是否有效的正確方法。

如果有更多的信息可以提供,請告訴我。

在此先感謝, Doug。

+1

1)那些是標準的Java循環;沒什麼可說的,也不確定要問什麼。 Java(儘管Java 8稍微改變了它)並不像[J] Python那樣具有表達力。 2)否;但它是「工作」?如果不是,*爲什麼*不是? (如果代碼「不能正常工作」,那麼LandPlot的hashCode/equals實現可能會出現問題。) – user2864740 2014-10-12 10:07:00

回答

2

您正在將LandPlot存儲爲關鍵值而不是值。代替 嘗試hm.put(i, new LandPlot(x,y));

0

現在好,謝謝你們。

結合我從兩個答案的信息,並結束了這個循環:

for(y = 0; y < 6; y++) 
    { 
      for(x = 0; x < 8; x++) 
      { 
       hm.put(i, new LandPlot(x, y)); 
       System.out.println(hm.get(i)); 
       i++; 
     } 
    } 

而且,我創建干將爲xy後,我在LandPlot推翻toString()返回:

return ("Land Plot at "+LandStore.getX()+","+LandStore.getY()); 

再次感謝,

Doug。