0

これは、一連のテーブルを並べて作成するための私のコードです (私はまだ初心者です)。

import java.applet.Applet;
import java.awt.*;

public class Test extends Applet{

public void init() {
setSize(500, 225);
}

public void paint (Graphics g){

//Desk #1
int [ ] x8 = {430, 430, 351, 351};
int [ ] y8 = {200, 185, 185,200};
g.drawPolygon(x8, y8, 4);

//Desk #2
int [ ] x9 = {351, 351, 272, 272};
int [ ] y9 = {200, 185, 185, 200};
g.drawPolygon(x9, y9, 4);

//Desk #3
int [ ] x10 = {272, 272, 193, 193};
int [ ] y10 = {185, 200, 200, 185};
g.drawPolygon(x10, y10, 4);

//Desk #4
int [ ] x11 = {193, 193, 114, 114};
int [ ] y11 = {185, 200, 200, 185};
g.drawPolygon(x11, y11, 4);

//Desk #5
int [ ] x12 = {114, 114, 35, 35};
int [ ] y12 = {185, 200, 200, 185};
g.drawPolygon(x12, y12, 4);

}
}

私ができるようにしたいのは、while ループを作成することだけなので、この一連の不要な処理をすべて実行する必要はありません。だれか効果的な while ループ コードを作成して、その方法を教えてください。長い間これにこだわっています。

4

5 に答える 5

1

内部クラスを使用して座標を格納することもできます。多次元配列に焦点を当てたいかどうかはわかりません。

public class Test extends Applet {

    Poly desk1 = new Poly(new int[] {430, 430, 351, 351}, new int[] {200, 185, 185,200});
    Poly desk2 = new Poly(new int[] {351, 351, 272, 272}, new int[] {200, 185, 185, 200});
    Poly desk3 = new Poly(new int[] {272, 272, 193, 193}, new int[] {185, 200, 200, 185});
    Poly desk4 = new Poly(new int[] {193, 193, 114, 114}, new int[] {185, 200, 200, 185});
    Poly desk5 = new Poly(new int[] {114, 114, 35, 35}, new int[] {185, 200, 200, 185});

    Poly[] desks = new Poly[] {desk1, desk2, desk3, desk4, desk5};

    public void init() {
        setSize(500, 225);
    }

    public void paint (Graphics g) {
        for (int i = 0; i < desks.length; i++) {
            g.drawPolygon(desks[i].xs, desks[i].ys, 4);
        }
    }

    private static class Poly {
        // public fields are sometimes frowned upon,
        // but for a private class and a simple example
        public int[] xs;
        public int[] ys;

        public Poly(int[] xs, int[] ys) {
            this.xs = xs;
            this.ys = ys;
        }
    }

}
于 2013-04-25T21:53:04.250 に答える
0

みんなの仕事に感謝し、それは役に立ちました。ありがとう、そしてforループも素晴らしい方法である最後の人に感謝しますが、その時、以下に示すように、whileループを使用して自分でそれを行う方法を見つけることができました! :)

    //Desk #1-4 #Using While Loop
    int c=0;
    int [ ] x1 = {65, 65, 153, 153};
    int [ ] y1 = {20, 35, 35, 20};
    g.drawPolygon(x1, y1, 4);


    while (c <= 3) {
        g.drawPolygon(x1, y1, 4);

        x1[0] += 88;
        x1[1] += 88;
        x1[2] += 88;
        x1[3] += 88;

        c += 1;  // c = c + 1; - Same thing.
    }
于 2013-05-18T01:34:32.820 に答える
0

これらの座標ごとに個別の配列を使用する代わりに、次のようなものを使用しないでください。

int[][] x = {
    {123, 534, 643},
    {123, 543, 152},
    ...
    {543, 125, 163}
};

int[][] y = {
    {123, 534, 643},
    {123, 543, 152},
    ...
    {543, 125, 163}
};

これで、ループを使用してこれらを反復処理する必要があります。ここでの暗黙の前提は、x と y の両方が同じ数の座標を持っているように見えることに注意してください。したがって、両方を同時に反復処理して、対応する と を取得できるはずxですy

SO にコードを書き出すように依頼しても、おそらくうまくいかないでしょう。

于 2013-04-25T21:47:43.407 に答える
0

私はあなたに答えを与えませんが、これは役立つかもしれません。x のサイズが [4][4]、y のサイズが [4][4] の 2 次元配列 int[][] を作成します。

その後、while ループを作成して、配列を反復処理できます。for ループでも十分です。

このようなもの

for(int i = 0 ; i < 4; i++) {
  g.drawPolygon(x[i], y[i]);
}

于 2013-04-25T21:48:03.983 に答える