Прежде всего, о ваших Rectangle
и Triangle
классах.Я чувствую, что вы упустили свою точку зрения (каламбур не предназначен), потому что вы поставили оба, расширяя класс Point
.Это не имеет особого смысла, так как у вас есть класс Shape
, который будет гораздо лучше выполнять роль суперкласса для них.
Итак:
class Rectangle extends Shape {
...
}
class Triangle extends Shape {
...
}
С этимкстати, что у вас есть:
- Вы фиксируете количество точек на входе;
- Вы создаете массив такого размера;
- Вы создаете и устанавливаете объект
Point
для каждой позиции массива.
Что нужно сделать дальше:
- Захватить координаты точек из входных данных
- Установите указанные координаты для объектов
Point
- Создайте объект
Triangle
или Rectangle
, в зависимости от того, сколько у вас точек.
Итаквнутри вашего оператора for
вы захотите сделать:
for (int i=0; i <= v.length; i++) {
v[i] = new Point();
x = sc.nextInt(); // Save 'x' value into the variable
y = sc.nextInt(); // Save 'y' value into the variable
v[i].setPoint(x, y); // Set both values using the method from Point
}
Тогда, так как Rectangle
и Triangle
имеют Shape
в качестве общего суперкласса, вам разрешено помещать объекты любогоодин из этих классов в переменной Shape
.Итак, сразу после оператора for
вы захотите сделать:
Shape s; // Create the empty variable here, so it will exist outside the if-else scope
if (n == 3)
s = new Triangle(v);
else
s = new Rectangle(v);
Наконец, просто напечатайте ваши очки:
for (int i = 0; i < v.length; i++)
v[i].printPoint();
И это в значительной степени.