Здесь возникают различные проблемы.
Во-первых, в обеих версиях вы объявляете методы , а не конструкторы. Это объявление метода:
public double Circle( double r, double rd )
Это объявление конструктора:
public Circle( double r, double rd )
Конструктор не указывает тип возвращаемого значения.
Далее в вашем Первая попытка, у вас есть комментарий о том, что вы создаете круг с радиусом rd
, но на самом деле вы не проходите через rd
:
// create an object of Circle with the radius rd
Circle circle1 = new Circle();
Это должно быть
Circle circle1 = new Circle(rd);
... но при попытке 1 вы также получили два параметра в методе, который должен быть конструктором, где вы хотите только 1.
При попытке 2, вы пытаетесь использовать переменную rd
в CircleApp2
, но она только объявлена в Circle
... и это объявление не будет работать, потому что оно пытается использовать args
, которая существует только в main
.
Одна из проблем заключается в том, что вы написали слишком много кода перед попыткой сборки. Нет смысла писать методы для вычисления окружности и площади, пока вы не можете создать экземпляр. Начните с минимального кода, получите , который компилирует, и затем вы можете добавить к нему. Вот мое предложение для отправной точки:
// I generally go along with the idea of "design for inheritance or prohibit it",
// hence the class being declared as final, but you probably don't need to worry about
// that too much when you're starting out.
public final class Circle
{
// I'd recommend making fields final where possible, and giving them
// more meaningful names than "r" or "rd". (It's not *too* bad in the
// context of a circle, but "radius" is still better.
private final double radius;
public Circle(double radius) {
this.radius = radius;
}
}
public final class CircleApp {
public static void main(String[] args) {
double radius = Double.parseDouble(args[0]);
Circle circle = new Circle(radius);
}
}
Теперь кода гораздо меньше, чтобы на него смотреть - поэтому, если вы чего-то не понимаете, вам будет легче точно определить, что это такое.