长度可变的数组

我想创建一个长度可变的数组。 我的想法(这行不通,而且很丑):

    int y = 7-getY();   
    Point[] punkte = new Point[y];              
    Point punkt = new Point(getX(),getY()+y);

         if(y==1){
            punkte[0]=punkt;                            
            return punkte;
            }

        if(y==2) {
            punkte[0]=punkt;
            punkte[0]=punkt2;
            return punkte;
        }

        if(y==3) {
            punkte[0]=punkt;
            punkte[0]=punkt2;
            punkte[0]=punkt3;
            return punkte;
        }
        if(y==4) {
        punkte[0]=punkt;
        punkte[0]=punkt2;
        punkte[0]=punkt3;
        punkte[0]=punkt4;
        return punkte;
    }

    if(y==5) {
        punkte[0]=punkt;
        punkte[0]=punkt2;
        punkte[0]=punkt3;
        punkte[0]=punkt4;
        punkte[0]=punkt5;
        return punkte;
    }

    if(y==6) {
        punkte[0]=punkt;
        punkte[0]=punkt2;
        punkte[0]=punkt3;
        punkte[0]=punkt4;
        punkte[0]=punkt5;
        punkte[0]=punkt6;
        return punkte;
    }

    if(y==7) {
        punkte[0]=punkt;
        punkte[0]=punkt2;
        punkte[0]=punkt3;
        punkte[0]=punkt4;
        punkte[0]=punkt5;
        punkte[0]=punkt6;
        punkte[0]=punkt7;
        return punkte;
    }

我认为您到目前为止已经了解了我的代码。绝对有一种写起来更容易,更短,更漂亮的方法,但是我无法理解... (欢迎使用代码)。

superlinkai 回答:长度可变的数组

这是(IMO)失败的“经典”示例,在switch语句中很有用(另请参见Duff's device)。

int y = 7 - getY();
Point[] punkte = new Point[y];
Point punkt = new Point(getX(),getY() + y);
// ...
switch(y) {
case 7: punkte[6] = punkt7;
case 6: punkte[5] = punkt6;
case 5: punkte[4] = punkt5;
case 4: punkte[3] = punkt4;
case 3: punkte[2] = punkt3;
case 2: punkte[1] = punkt2;
case 1: punkte[0] = punkt;
}
return punkte;

或者,使用List<Point>

本文链接:https://www.f2er.com/3157228.html

大家都在问