2016-10-01 55 views
0

我試圖做出15個不同的多邊形的實例,每個具有不同的半徑,從225開始,每個比另一個短15像素,第二和第三個字段是對象中心位置的座標。我所知道的[I]不工作,我已閱讀,我應該使用數組,但我有麻煩它實現我的代碼:新來的java,想創建一個循環,使對象

public void paintComponent(Graphics g) 
{ 
    Graphics2D g2 = (Graphics2D) g; 

    int i; 
    int number = 15; 
    int radiussize = 225; 

    for(i=0;i<=number;i++){ 
     Shape object[i]= new Shape(radiussize-(i*15),250,300); 
     object[i].draw(g2); 
    } 
} 

我想要的結果是15個對象命名爲:

object0, object1, object2...object15. 

回答

1

如果您想在循環中執行此操作,則不能爲變量指定名稱。如果你要存儲這些你應該做的對象的數組,並以這種方式創建它們:

public void paintComponent(Graphics g) { 
    Graphics2D g2 = (Graphics2D) g; 

    int number = 15; 
    int radiusSize = 225; 

    Shape[] objects = new Shape[number]; 

    for(int i=0; i<number; i++){ 
     objects[i] = new Shape(radiuSsize - (i * 15), 250, 300); 
     objects[i].draw(g2); 
    } 
} 
0

你有什麼確切的問題?

以下不適用?

for(i=0;i<=number;i++){ 
      Shape object= new Shape(radiussize-(i*15),250,300); 
      object.draw(g2); 
      } 
+0

不,這只是創建一個單一的對象實例。我想要15個不同的實例... –

+0

該循環確實創建了15個不同的實例。但據我所知,你希望這些實例的命名方式不同,以便在後面的代碼中使用。在這種情況下,去數組/列表 –

0

我知道你有一個數組在你的代碼的權利稱爲object的地方在那裏?如果是的話那麼就做到這一點,而不是Shape object[i]=...

object[i] = new Shape(...

它基本上把新的Shape對象上的數組中第i個位置稱爲object。就像我說的,你需要有一個數組,如果你不那麼把這個地方在你的類:

Shape[] object = new Shape[16];

此代碼創建Shape對象的數組大小16。如果你只是想畫你的對象,不把它們存儲在任何地方,然後執行:

new Shape(radiussize-(i*15),250,300).draw(g2);

如果你希望你的變量稱爲object1object2等 - 你不能做到這一點,有沒有理由你會需要。只需將它們存儲在一個數組中,並通過arrayName[indexOfElementYouWant]引用它們。