2016-10-01 97 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]引用它们。