Error: Método principal no encontrado en la clase Calcular, defina el método principal como: public static void main (String args)

Necesito ayuda con el método principal, recibo este error:

Error: Main method not found in class Calculate, please define the main method as: public static void main(String[] args) 

Aquí está el código:

 class Calculate { private double fn; private double sn; private char op; public void setNumber(double fnum, double snum){ this.fn = fnum; this.sn = snum; } public double getNumber1(){ return fn; } public double getNumber2(){ return sn; } public void setOper(char oper){ this.op = oper; } public char getOper(){ return op; } public void getAnswer(){ double ans; switch (getOper()){ case 'a': { ans = add(getNumber1(), getNumber2()); ansOutput(ans); break; }case 'b': { ans = sub (getNumber1(), getNumber2()); ansOutput(ans); break; }case 'c': { ans = mul (getNumber1(), getNumber2()); ansOutput(ans); break; }case 'd': { ans = div (getNumber1(), getNumber2()); ansOutput(ans); break; }default: System.out.println("--------------------------"); System.out.println("Invalid choice of operator"); System.out.println("--------------------------"); } } public static double add(double x,double y){ return x + y; } public static double sub(double x, double y){ return x - y; } public static double mul(double x, double y){ return x * y; } public static double div(double x, double y){ return x / y; } public static void ansOutput(double x){ System.out.println("----------- -------"); System.out.printf("the answer is %.2f\n", x); System.out.println("-------------------"); } } 

Reinicia tu IDE y todo estará bien

De los documentos

En el lenguaje de progtwigción Java, cada aplicación debe contener un método principal cuya firma sea:

 public static void main(String[] args) 

Los modificadores públicos y estáticos se pueden escribir en cualquier orden (público estático o público estático), pero la convención es usar estática pública como se muestra arriba. Puede nombrar el argumento como lo desee, pero la mayoría de los progtwigdores eligen “args” o “argv”.

Como usted dice:

error: missing method body, o declare abstract public static void main (String [] args); ^ esto es lo que obtuve después de que lo agregué después del nombre de la clase

Probablemente no haya declarado main con un cuerpo (como ‘;’ sugeriría en su error).

Necesitas tener el método principal con un cuerpo, lo que significa que debes agregar {y}:

 public static void main(String[] args) { } 

Agrégalo dentro de tu definición de clase.

Lo que es más importante, aprenda a leer los documentos y las descripciones de errores que está recibiendo, le ayudarán muchas veces más.

Mis sugerencias :

  • Mantenga el progtwig modular Mantenga la clase Calculate en un archivo Calculate.java por separado y cree una nueva clase que invoque el método principal. Esto haría que el código sea legible.
  • Para establecer los valores en el número, use constructores. No use como los métodos que ha usado anteriormente, como:

    public void setNumber (doble fnum, doble snum) {this.fn = fnum; this.sn = snum; }

    Los constructores existen para inicializar los objetos. Este es su trabajo y son bastante buenos en eso.

  • Los getters para miembros de la clase Calculate parecen estar en su lugar. Pero los setters no lo son. Getters and setters sirve como un bloque importante en el puente de la progtwigción eficiente con Java. Coloca setters para fnum y snum también

  • En la clase principal, crea un objeto Calculate usando el nuevo operador y el constructor en su lugar.

  • Llame al método getAnswer () con el objeto Calculate creado.

El rest del código se ve bien para mí. Sé modular. Podrías leer tu progtwig de una manera mucho mejor.

Aquí está mi pedazo de código modular. Dos archivos: Main.java y Calculate.java

Calculate.java

 public class Calculate { private double fn; private double sn; private char op; public double getFn() { return fn; } public void setFn(double fn) { this.fn = fn; } public double getSn() { return sn; } public void setSn(double sn) { this.sn = sn; } public char getOp() { return op; } public void setOp(char op) { this.op = op; } public Calculate(double fn, double sn, char op) { this.fn = fn; this.sn = sn; this.op = op; } public void getAnswer(){ double ans; switch (getOp()){ case '+': ans = add(getFn(), getSn()); ansOutput(ans); break; case '-': ans = sub (getFn(), getSn()); ansOutput(ans); break; case '*': ans = mul (getFn(), getSn()); ansOutput(ans); break; case '/': ans = div (getFn(), getSn()); ansOutput(ans); break; default: System.out.println("--------------------------"); System.out.println("Invalid choice of operator"); System.out.println("--------------------------"); } } public static double add(double x,double y){ return x + y; } public static double sub(double x, double y){ return x - y; } public static double mul(double x, double y){ return x * y; } public static double div(double x, double y){ return x / y; } public static void ansOutput(double x){ System.out.println("----------- -------"); System.out.printf("the answer is %.2f\n", x); System.out.println("-------------------"); } } 

Main.java

 public class Main { public static void main(String args[]) { Calculate obj = new Calculate(1,2,'+'); obj.getAnswer(); } } 

Donde has escrito el código

 public class Main { public static void main(String args[]) { Calculate obj = new Calculate(1,2,'+'); obj.getAnswer(); } } 

Aquí debe ejecutar la clase “Principal” en lugar de la clase que creó al inicio del progtwig. Para hacerlo, vaya a Ejecutar Configuración y busque este nombre de clase “Principal”, que tiene el método principal dentro de este (public void main (String args [])). Y obtendrás tu resultado.

parece que no has creado un método principal, que probablemente debería verse más o menos así (no estoy seguro)

  class RunThis { public static void main(String[] args) { Calculate answer = new Calculate(); answer.getNumber1(); answer.getNumber2(); answer.setNumber(answer.getNumber1() , answer.getNumber2()); answer.getOper(); answer.setOper(answer.getOper()); answer.getAnswer(); } } 

el punto es que deberías haber creado un método principal bajo alguna clase y después de comstackr debes ejecutar el archivo .class que contiene el método principal. En este caso, el método principal está en RunThis ie RunThis.class.

Soy nuevo en Java, esta puede o no ser la respuesta correcta, corrígeme si estoy equivocado