0

文字列から選択されたランダムな高さ、ランダムな幅、ランダムな色を持つ 10 個の四角形の配列を返すことになっている割り当てに取り組んでいます。

プログラムは 1 つの四角形のオブジェクトを返すように正常に動作しますが、これを実装して 10 個の四角形の配列を作成し、それぞれをループで返すにはどうすればよいでしょうか?

私のオブジェクトを含む私のクラスファイルは次のとおりです。

import java.util.*;

public class Rectangle 
{
    private double width;
    private double height;
    public static String color = "White";
    private Date date;

Rectangle() {
    width = 1;
    height = 1;
    date = new Date(); 
    }

Rectangle (double w, double h) {
    width = w;
    height = h;
    date = new Date();
    }

public double getHeight() {
    return height;
    }

public void setHeight(double h) {
    height = h;
    }

public double getWidth() {
    return width;
    }

public void setWidth(double w) {
    width = w;
    }

public static String getColor() {
    return color;
    }

public static void setColor(String c) {
    color = c;
    }

public Date getDate() {
    return date;
    }

public void setDate (Date d) {
    date = d; 
    }

public double getArea() {
    return width * height;
    }

public double getPerimeter() {
    return 2  * (width + height);
    }

public String toString() {
    String S;
    S = "Rectangle with width of " + width;
    S = S + " and height of " + height;
    S = S + " was created on " + date.toString();
    return S;
    }

}

これまでのクライアントプログラムは次のとおりです。ランダムな高さとランダムな幅を設定し、色の文字列からランダムな色を選択しています。

10個の異なる長方形の配列に対してこれを実行できるようにしたいと思います:

import java.util.*;

public class ClientRectangle 
{
    public static void main(String[] args)
    {
        String[] colors = {"White","Blue","Yellow","Red","Green"};

        Rectangle r = new Rectangle();
        int k;
        for(int i = 0; i < 10; i++)
        {
            r.setWidth((Math.random()*40)+10); 
            r.setHeight((Math.random()*40)+10);
            System.out.println(r.toString() + " has area of " + r.getArea() + " and perimeter of " + r.getPerimeter());
            k = (int)(Math.random()*4)+1;
            System.out.println(colors[k]);

        }



    }
}       

ありがとう!

4

3 に答える 3

0

オブジェクトの配列を宣言する方法を既に知っているようです。これは、s の配列で宣言したためですString。s の配列の宣言Rectangleは非常に似ています。

Rectangle[] rects;

配列も初期化する必要があることに注意してください。配列はそれ自体がオブジェクトであるためnew、参照変数を単一の に初期化するときのように、演算子を使用しRectangleます。

Rectangle[] rects = new Rectangle[SIZE];

ご覧のとおり、唯一の違いは、配列のサイズを s の中に入れることです[]。これは、オブジェクトへの参照の配列を作成するだけです。Rectangle参照はすべて自動的に に設定されnullます。これは、自分自身を作成する必要があることを意味しますRectangles。forループでこれを行うことができます:

for (int i = 0; i <= SIZE; ++i) {
    rects[i] = new Rectangle();
}

また、それぞれの幅と高さを必要に応じて設定することもできRectangleます。(これを行う方法の正確な詳細は読者に任せます。)

最後に、指示が示すように、配列全体を返すことができるように (一度に 1 つずつ返さないでください)、これ以外のメソッドにこれをすべて配置する必要があります。 main()Rectangle

return rects;
于 2013-04-03T01:00:55.463 に答える