2013-11-02 2 views
-1

Какая ошибка в этом алгоритме? Как я могу это решить? Затмение сказать мне ошибку в основном наГде ошибка в этом геометрическом алгоритме?

area c1 = new area(); 

import java.awt.Rectangle; 

public class ClasseRettangolo { 

    public class area { 
     Rectangle box = new Rectangle(5 , 10, 15, 20); 
     public double surface() { 
      return (box.getHeight() * box.getWidth()); 
     } 
    } 
    public class perimeter { 
     Rectangle box = new Rectangle(5 , 10, 15, 20); 
     public double outline() { 
      return ((box.getHeight() + box.getWidth())* 2); 
     } 
    } 
    public static void main(String[] args){ 
     area c1 = new area(); 
     perimeter c2 = new perimeter(); 

     System.out.println("The area of the Rectangle is: " + c1.surface()); 
     System.out.println("The perimeter of the Rectangle is: " + c2.outline()); 
    } 
} 
+1

Прочитать сообщение об ошибке. Если вы этого не понимаете, опубликуйте его. Он рассказывает вам, что и где проблема. –

+0

И прочитал о условных обозначениях Java. – user1685095

ответ

2

Проблема заключается в том, что вы используете не-статические внутренние классы. Кажется, что вы новичок, поэтому на данный момент подчиняйтесь этому простому правилу: каждый класс должен быть определен как класс верхнего уровня в своем собственном .java-файле. Как только вы поймете, как работают простые классы, прочитайте the tutorial about nested classes.

Также соблюдайте соглашения об именах Java: классы начинаются с буквы верхнего регистра.

0

класс делает площадь и периметр класс как статический класс, как показано ниже

import java.awt.Rectangle; 

public class ClasseRettangolo { 

public static class area { 
    Rectangle box = new Rectangle(5 , 10, 15, 20); 
    public double surface() { 
     return (box.getHeight() * box.getWidth()); 
    } 
} 
public static class perimeter { 
    Rectangle box = new Rectangle(5 , 10, 15, 20); 
    public double outline() { 
     return ((box.getHeight() + box.getWidth())* 2); 
    } 
} 
public static void main(String[] args){ 
    area c1 = new area(); 
    perimeter c2 = new perimeter(); 

    System.out.println("The area of the Rectangle is: " + c1.surface()); 
    System.out.println("The perimeter of the Rectangle is: " + c2.outline()); 
} 
} 

подробнее о статическом внутреннем классе от oracle docs

0

классов area и perimeter относятся к классу ClasseRettangolo. Поскольку они не являются статическими, но внутренними классами, невозможно создать экземпляры из них, не имея экземпляра внешнего класса. И даже тогда имя не будет area, это будет ClasseRettangolo.area.

3

Либо сделать area и perimeter классы static

public static class area { .. } 

public static class perimeter { .. } 

Или вам придется создать экземпляр класса ClasseRettangolo, а затем вложенные из них.

Не относится к проблеме:

  • Ваши имена классов не соответствуют именования convertions Java: Они должны начинаться с заглавной буквы.