Java “如何调试”;“表达式开头非法”;在爪哇?

Java “如何调试”;“表达式开头非法”;在爪哇?,java,swing,compiler-errors,Java,Swing,Compiler Errors,在Jcreator中,这里有12个错误,我不知道如何修复它。上面写着“非法启动expr…” 如果我改变了什么,突然间,又多了50个错误 public class Practica_figura { Class Figura() { private float base; private float altura; private float radio; } public void asignar(float ba, fl

在Jcreator中,这里有12个错误,我不知道如何修复它。上面写着“非法启动expr…”

如果我改变了什么,突然间,又多了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");
    }
}

首先,类的定义不太正确

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
    }
}

其次,您在子类中隐藏变量,这种方法可能会使事情变得混乱。

要更改正确的类定义

public class Practica_figura{class figura(){

公共类图形{

我真的不明白您想做什么,如果您想要的是一个构造函数,那么您必须添加:

public Figura(){
}

如果类名是Practica\u figura,那么构造函数必须是Practical\u figura,并且它没有“类”在它前面。确实不清楚您想要实现什么。正如我和@Samzerge所指出的,您的基类定义很奇怪。但是,假设目标是一个Practica_figura类,它有内部类figura、Cuadrado和Triangulo,那么您需要按照我上面所做的编辑进行操作。但是,您没有提供任何Figura类中的getter/setter,因此base、altura和radio将是无用的。Practica_Figura中的方法asignar无法访问Figura类中的私有变量。您正在子类中隐藏变量。“隐藏变量”是什么意思?问题是:“类square、circle和triangle必须计算面积和周长,然后将该功能放在一个通用类中是有意义的,如图所示。实现此功能。”oviously using Inheritance我没有将您的所有代码复制到答案中。但是,在您问题的代码中,您有“float base”“在Figura类中。您的Cuadrado类中也有float base。现在,这有点错误,因为它们是私有的,所以在技术上它们没有阴影。但是,这会导致混淆。您正在扩展一个基类,因此您的Cuadrado类应该在基类中使用base、altura和radio变量(通过基类中的getter/setter方法或将它们更改为受保护而不是私有)而不是重新定义它们。