2013-12-08 22 views
0

所以我製作了這個程序,我試圖在我的測試文件中添加一個靜態方法,將所有「紅色」形狀的隨機陣列變成一個。 公共抽象類Shape 形狀類將形狀變爲紅色的靜態方法

public abstract class Shape 
{ 
private String color; 
public Shape() { color = "white";} 
public String getColor() { return color;} 
public void setColor(String c) { color = c; } 
public abstract double area(); 
public abstract double perimeter(); 
public abstract void display(); 
} 

圈類

public class Circle extends Shape { 

    private double radius; 
    public Circle(double r) 
    { 
    super(); 
    radius = r; 
    } 
    public double getRadius() 
    { return radius; } 
    //Implement area, perimeter and display 
    public double area() 
    { 
    return Math.PI * radius* radius; 
    } 
    public double perimeter() 
    { 
    return 2* Math.PI *radius; 
    } 
    //Circle class - continued 
    public void display() 
    { 
    System.out.println(this); 
    } 
    public String toString() 
    { 


       return "Circle: radius:" + radius 
       + "\tColor: " + getColor(); 

    } 
} 

我的主要測試

public class TestingShapes { 

    public static double sumArea(Shape[] b) 
    { 
     double sum = 0.0; 
     for(int k = 0; k < b.length; k++) 
     { 
      sum = sum + b[k].area(); 

     } 
     return sum; 

    } 
    public static void printArray(Shape[] b) 
    { 
    for (Shape u: b) 
System.out.println(u + "\tArearea " + u.area()); 
    System.out.println(); 
    } 





    public static void main(String[] args) 
    { 
    Shape[] list = new Shape[20]; //Not creating Shapes 
    for (int k = 0 ; k < list.length; k++) 
    { 
    double z = Math.random(); 
    if(z < 0.33) 
    list[k] = new Circle(1 + Math.random() * 10); 
    else if(z<0.66) 
    list[k] = new Rectangle (3*(k+1), 4*(k+1), 5*(k+1),6*(k+1)); 
    else 
    list[k] = new Triangle (3*(k+1), 4*(k+1), 5*(k+1)); 

    } 

    printArray(list); 
    System.out.println(); 
    double sum = sumArea(list); 
    System.out.println("Sum of List Area: " + sum); 
    } 
+5

你的問題是什麼? –

+0

我將如何做一個靜態方法,可以隨機將一些形狀變成紅色而不是白色 – russiandobby

+1

@ user2977404每個形狀都有一個'setColor(String c)'方法。用它。 –

回答

0

要關閉一些形狀隨機紅色類,你可以創建一個方法接受形狀數組,並在其上循環。您可以使用Math.random()獲得0到1之間的隨機浮點數。要將20%的形狀變成紅色,您只需比較Math.random()到20%:if (Math.random() < 0.2) { call the shape's setColor method with "red" }。由於Java中的數組/集合是通過引用傳遞的,因此不需要從方法返回任何內容,它將修改調用方擁有的副本。