2015-04-23 2 views
0

Это домашнее задание, я не могу понять, почему он не работает.Что не так с моим массивом

import java.util.ArrayList; 

public class Main { 
    Shapes[] listTest = new Shapes[6]; 
    listTest[0] = new Circle[2.0]; 
    listTest[1] = new Triangle[]; 
    listTest[2] = new Rectangle[4]; 
    listTest[3] = new Trap[]; 
    listTest[4] = new Square[4]; 
    listTest[5] = new Quadrilateral[]; 
} 

// This is the other class 

public class Circle implements Shapes { 

    private double radius; 
    private String name = "circle"; 

    public Circle(double radius){   
     this.radius = radius;  
    } 
    public double area(){ 
     double perimeter = Math.PI*radius*radius; 
     return perimeter; 
    } 
    public double perimeter(){ 
     double area = Math.PI * 2*radius; 
     return area; 
    } 
    public String getName(){ 
     return name; 
    } 
} 

Это другой класс Circle, содержащий конструктор и методы, которые используют частные переменные.

+0

Что не за работой? – xboxremote

+0

его высказывание о том, что ожидается скобка – Nia

+0

(Вы получаете сообщение об ошибке? Результат не тот, который вы ожидаете?) – xboxremote

ответ

2

Массив ожидает объект формы, а не массивы фигур.

Например:

он ищет

listTest[0] = new Circle(2); 

не

listTest[0] = new Circle[2.0]; 
2

Квадратные скобки используются для инициализации массива, я получаю ощущение, что вы намереваетесь вызвать конструктор объектов Shape. Измените эти квадратные скобки [] в скобках ().

Вот пример того, что я имею в виду.

public class Main { 
    interface Shape { 
     // ... 
    } 

    class Circle implements Shape { 
     private double radius; 
     public Shape(double radius) { 
      this.radius = radius; 
     } 
    } 
    // the rest of the shapes 

    public static void main(String[] args) { 
     Shape[] listTest = new Shape[6]; 
     listTest[0] = new Circle(2.0); 
     // the rest of the shapes 
    } 
} 
0

Речь идет о том, как создавать объекты в Java. На основании названий: Shapes, Circle, Triangle. Он выглядит как Java Inheritance, поэтому я думаю, что логика объявляет массив Shapes, а затем создает элементы массива instances/objects. При создании экземпляра объекта, вы должны использовать скобки () кроме квадратных скобок

При использовании new оператора для классов Circle, Triangle, это называется instantiation, вы создаете объект в памяти, Вызывается конструктор класса.

несколько примеров:

Point originOne = new Point(23, 94); 
Square rectOne = new Square(); 
Rectangle rectTwo = new Rectangle(50, 100); 

обратно в коде constructor вашего класса Circle является

public Circle(double radius) 
{ 
this.radius = radius; 
} 

поэтому, чтобы создать объект, было бы new Circle(2.0)

Смежные вопросы