【问题标题】:How to create an array of Rectangles with a Rectangle class?如何使用 Rectangle 类创建一个 Rectangle 数组?
【发布时间】:2013-04-03 00:52:54
【问题描述】:

我正在处理一个任务,该任务应该返回一个由 10 个矩形组成的数组,这些矩形具有从字符串中选择的随机高度、随机宽度和随机颜色。

该程序可以很好地返回一个矩形的对象,但是我如何实现它来创建一个包含 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]);

        }



    }
}       

谢谢!

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    创建一个矩形数组并为每个索引添加一个矩形。

    Rectangle[] arr = new Rectangle[10];
    
    for(int i = 0; i < 10; i++)
    {
     Rectangle r = new Rectangle();
     r.setWidth((Math.random()*40)+10); 
     r.setHeight((Math.random()*40)+10);
    
     arr[i] = r;
    }
    

    【讨论】:

    • 啊,我明白了,格式有点问题。非常感谢!
    【解决方案2】:

    Rectangle r = new Rectangle(); 移动到 for 循环内。在循环外初始化一个 Array(List),并不断将循环中的 Rectangles 添加到数组中。

    【讨论】:

      【解决方案3】:

      您似乎已经知道如何声明一个对象数组,因为您使用的是Strings 数组。 Rectangles 数组的声明非常相似:

      Rectangle[] rects;
      

      请注意,您必须还初始化数组。由于数组本身就是对象,因此您使用 new 运算符,有点像将引用变量初始化为单个 Rectangle

      Rectangle[] rects = new Rectangle[SIZE];
      

      如您所见,唯一的区别是您将数组的大小放在[]s 中。这只会创建一个 referencesRectangle 对象的数组。引用都自动设置为null。这意味着您需要自己创建Rectangles。您可以在 for 循环中执行此操作:

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

      您还可以根据需要设置每个Rectangle 的宽度和高度。 (我会将有关如何执行此操作的确切细节留给读者。)

      最后,你需要把这一切都放在一个方法中除了 main() 这样你就可以返回整个数组(你不会一次返回一个Rectangle)作为指令状态:

      return rects;
      

      【讨论】:

      • @DanielRojas 我认为您没有像程序员那样使用“返回”这个词。如果您对更多细节感兴趣,请了解函数以及它们如何指示结果。
      猜你喜欢
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 2013-05-06
      • 2012-07-29
      • 2011-07-13
      • 1970-01-01
      • 2014-12-12
      • 2014-01-14
      相关资源
      最近更新 更多