2014-11-08 4 views
-1

Я работаю над этим несколько дней и не могу запустить программу. Я должен назвать 3 поля и использовать setRadius() getRadius(). Я также должен установить и вычислить все поля в setRadius(). Поначалу у меня не было главного, но все время возникала ошибка. Я включил основные компиляции программ, но не запускаю. Пожалуйста помоги.Почему моя программа «Круг» не запускается?

public class Circle 
{ 
public static void main(String[] args) 
{ 
    Circle myCircle = new Circle(); 

} 
double radius; 
double diameter; 
double area; 

public void Circle() 
{ 
    radius= 1; 
    diameter = radius * radius; 
    area = Math.PI * radius * radius; 

} 
public void setRadius() 
{ 
    radius = 1; 
    diameter = radius * radius; 
    area = Math.PI * (radius * radius); 

} 
public double getRadius() 
{ 
    return radius; 
} 
public void display() 
{ 
    System.out.println("The radius is " + radius); 
    System.out.println("The diameter is " + diameter); 
    System.out.println("The area is " + area); 
} 

} 
+0

вызова методов –

+3

'общественной недействительной Circle()' не является конструктор. Удалите ключевое слово void и затем вызовите 'myCircle.display()' в вашем основном. – user2336315

+0

FYI, 'радиус * радиус' НЕ' диаметр' круга –

ответ

1

Как кто-то сказал в комментарии ваш конструктор не действительный. вашего setRadius Шоуда получить параметр и вызвать дисплей после строительства

public class Circle { 
public static void main(String[] args) { 
    Circle myCircle = new Circle(); 
    myCircle.display(); 
} 

double radius; 
double diameter; 
double area; 

public Circle() { 
    radius = 1; 
    diameter = radius * radius; 
    area = Math.PI * radius * radius; 
} 

public void setRadius(double radius) { 
    this.radius = radius; 
    diameter = radius * radius; 
    area = Math.PI * (radius * radius); 

} 

public double getRadius() { 
    return radius; 
} 

public void display() { 
    System.out.println("The radius is " + radius); 
    System.out.println("The diameter is " + diameter); 
    System.out.println("The area is " + area); 
} 

}

+0

'диаметр = радиус * радиус' еще не прав. – khelwood

+0

Да, вы правы, диаметр 2 * r, и поэтому площадь 2 * r * pi –

+0

Площадь не '2 * r * pi' – khelwood

0

Главное - это точка входа вашей программы, независимо от того, что вы включили в нее, будет работать. Ваша программа работает, она просто ничего не делает (кроме создания круга). Если вы хотите, чтобы программа отображала эти сообщения, вам нужно позвонить display() внутри основного.

public static void main(String[] args) 
{ 
    Circle myCircle = new Circle(); 
    myCircle.display(); 
} 
0

Это работает. Но делать то, что вы делаете здесь, это новый объект крепирования. Добавьте еще несколько операций для своего объекта.

public static void main(String[] args) 
{ 
    Circle myCircle = new Circle(); 
    myCircle.setRadius(); 
    myCircle.display(); 
} 

UPD: Также у вас есть какая-то ошибка:

  1. Диаметр = 2 * радиус (не радиус * радиус)

  2. общественный аннулируются Circle() - это функция, а не конструктор , Плохая практика - использовать методы с тем же именем, что и contructor. Так что если вы хотите быть конструктором удалить «недействительным»

  3. Это будет более гибким, если вы будете использовать метод setRadius подобное:

 
    public void setRadius(double r) 
    { 
     radius = r; 
     diameter = 2 * radius; 
     area = Math.PI * radius * radius; 
    } 
+1

'System.out.println'? Как должен быть вызван метод, чтобы знать, что был принят незаконный аргумент? Разбор STDOUT? Конечно, вы имеете в виду 'throw new IllegalArgumentException' ... –

+0

Yep. Вы пишете. Я был немного ленив, чтобы использовать его. Потому что кажется, что автор вопроса находится в начале своего пути как программист и, возможно, не знает об исключениях. –

+0

Тогда не добавляйте проверку вообще. Нет смысла обучать учащегося худшим возможным привычкам с первого дня. –

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