2016-03-22 2 views
-1

В Jcreator, здесь есть 12 ошибок, я не знаю, как это исправить. В нем говорится о «незаконном запуске expr ....».Как отлаживать «незаконный запуск выражения» в Java?

Если я что-то изменил, вдруг, еще 50 ошибок.

public class Practica_figura { 
    Class Figura() { 
     private float base; 
     private float altura; 
     private float radio; 
    } 

    public void asignar(float ba, float al, float ra) { 
     base = ba; 
     altura = al; 
     radio = ra; 
    } 

    class Cuadrado extends Figura() 
    { 
     private float base; 
     private float altura; 

     public void calcular_area(float b, float a) { 
      float res = base * altura; 
     } 

     public void calcular_perimetro(float a) { 
      float resp = 4 * a; 
     } 

     public void rareac() { 
      return area; 
     } 

     public void rperic() { 
      return perimetro; 
     } 
    } 

    class Triangulo extends Figura() 
    { 
     private float base; 
     private float altura; 
     private float la; 
     private float lb; 
     private float lc; 

     public void asignar(float a, float b, float c) { 
      la = a; 
      lb = b; 
      lc = c; 
     } 

     public void calcular_area(float b, float a) { 
      float res = (base * altura)/2; 
     } 

     public void calcular_perimetro(float a) { 
      float resp = 4 * a; 
     } 

     public void rareat() { 
      return area; 
     } 

     public void rperit() { 
      return perimetro; 
     } 

    } 

    public static void main(String[] args) { 
     // TODO code application logic here 

     float base = 0, altura = 0, radio = 0; 
     JOptionPane.showMessageDialog(null, "Programa para calcular área y perímetro"); 
    } 
} 
+0

Если имя класса - Practica_figura, тогда конструктор должен быть Practical_figura, и перед ним нет класса. – KevinO

ответ

0

Во-первых, класс не совсем правильно определен.

public class Practica_figura 
{ 
    private float base; 
    private float altura; 
    private float radio; 

    public Practica_figura() 
    { 
    } 



    public void asignar(float ba, float al, float ra) 
    { 
     base = ba; 
     altura = al; 
     radio = ra; 
    } 

    //edits assuming you want inner classes 
    class Figura 
    { 
     private float base, altura, radio; 

     // you will need getters/setters for the variables 
    } 

    class Cuadrado extends Figura 
    { 
     // insert class logic here 
    } 

    class Triangulo extends Figura 
    { 
     // insert class logic here 
    } 
} 

Во-вторых, вы затеняете переменные в своих дочерних классах, и этот подход может сбить с толку.

+0

Это действительно неясно, чего вы пытаетесь достичь. Как я, как и @Samzerge отметил, ваше определение базового класса странно. Однако, предполагая, что целью был класс Practica_figura, который имеет внутренние классы Figura, Cuadrado и Triangulo, тогда вам нужно будет выполнить изменения, которые я сделал выше. Однако вы не предоставили никаких геттеров/сеттеров в классе Figura, поэтому база, altura и радио будут бесполезны. Метод asignar в Practica_figura не может получить доступ к частным переменным в классе Figura. Вы затеняете переменные в своих дочерних классах. – KevinO

+0

Что вы имеете в виду под «переменными затенения»? –

+0

проблема заключается в следующем: «Квадраты классов, круг и треугольник должны вычислять площадь и периметр , тогда имеет смысл включить эту функциональность в общий класс, как показано на рисунке. Внедрите это». Очевидно, используя наследование –

0

Чтобы изменить определение класса правильно

public class Practica_figura { Class Figura(){

в

public class Figura{

Я не очень понимаю, что вы пытаетесь сделать, если то, что вы хотели, конструктор то вам необходимо будет добавить:

public Figura(){ 
} 
Смежные вопросы