2016-03-22 2 views
-1

In Jcreator gibt es 12 Fehler hier, ich weiß nicht, wie man es behebt. Es heißt "illegaler Start des Ausdrucks ...".Wie debugge "illegaler Anfang des Ausdrucks" in Java?

Wenn ich etwas ändere, plötzlich, 50 Fehler mehr.

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

Wenn der Klassenname "Practica_figura" lautet, muss der Konstruktor "Practical_figura" sein und die Klasse "Class" darf nicht davor stehen. – KevinO

Antwort

0

Zuerst ist die Klasse nicht richtig definiert.

Zweitens schirmen Sie Variablen in Ihren untergeordneten Klassen, und dieser Ansatz kann Dinge verwirrend machen.

+0

Es ist wirklich unklar, was Sie erreichen möchten. Wie ich, und @Samzerge bemerkt habe, ist deine Basisklassendefinition seltsam. Angenommen, das Ziel war eine Practica_figura-Klasse mit den inneren Klassen Figura, Cuadrado und Triangulo, dann müssten Sie den oben beschriebenen Änderungen folgen. Allerdings haben Sie in der Figura-Klasse keine Getter/Setter bereitgestellt, so dass Base, Altura und Radio nutzlos sind. Die Methode asignar in Practica_figura kann nicht auf die privaten Variablen in der Figura-Klasse zugreifen. Sie überschatten Variablen in Ihren untergeordneten Klassen. – KevinO

+0

Was meinst du mit "shadowing Variablen"? –

+0

Das Problem ist das: "Die Klassen Quadrat, Kreis und Dreieck müssen die Fläche und den Umfang berechnen, dann macht es Sinn, diese Funktionalität in eine generische Klasse als Abb. Implementieren Sie dies." früherer Verwendung der Vererbung –

0

Um eine korrekte Klassendefinition ändern

public class Practica_figura { Class Figura(){

zu

public class Figura{

Ich verstehe nicht wirklich, was Sie zu tun haben versucht, ob das, was man einen Konstruktor wollte, war, dann müssten Sie hinzufügen:

public Figura(){ 
}