web-dev-qa-db-fra.com

Erreur: La méthode principale est introuvable dans la classe Calculate. Veuillez définir la méthode principale comme suit: public static void main (String [] args)

J'ai besoin d'aide avec la méthode principale, je reçois cette erreur:

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

Voici le code:

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("-------------------");
    }
}
3
user3046225

Redémarrez votre IDE et tout ira bien

8
Rohit kumar

De la docs

Dans le langage de programmation Java, chaque application doit contenir une méthode principale dont la signature est:

public static void main(String[] args)

Les modificateurs public et static peuvent être écrits dans n'importe quel ordre (public statique ou public public statique), mais la convention consiste à utiliser public statique comme indiqué ci-dessus. Vous pouvez nommer l'argument comme bon vous semble, mais la plupart des programmeurs choisissent "args" ou "argv".

Comme tu dis:

error: corps de la méthode manquant, ou déclarer un résumé public public statique abstrait abstrait (String [] args); ^ voici ce que j'ai obtenu après l'avoir ajouté après le nom de la classe

Vous n'avez probablement pas déclaré main avec un corps (comme le suggère ";" dans votre erreur).

Vous devez avoir la méthode principale avec un corps, ce qui signifie que vous devez ajouter {et}:

public static void main(String[] args) {


}

Ajoutez-le dans votre définition de classe.

Plus important encore, s'il vous plaît, apprenez à lire la documentation et les descriptions d'erreur que vous obtenez, elles vous aideront beaucoup de fois à venir.

6
Melquiades

Mes suggestions: 

  • Gardez le programme modulaire. Conservez la classe Calculate dans un fichier Calculate.Java séparé et créez une nouvelle classe qui appelle la méthode main. Cela rendrait le code lisible.
  • Pour définir les valeurs dans le nombre, utilisez des constructeurs. Ne pas utiliser comme les méthodes que vous avez utilisées ci-dessus comme: 

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

    Les constructeurs existent pour initialiser les objets. C’est leur travail et ils sont très bons.

  • Les accesseurs pour les membres de la classe Calculate semblent en place. Mais les setters ne le sont pas. Les Getters et les setters constituent un bloc important dans la passerelle d’une programmation efficace avec Java. Mettez également des setters pour fnum et snum

  • Dans la classe principale, créez un objet Calculate en utilisant l'opérateur new et le constructeur en place.

  • Appelez la méthode getAnswer () avec l'objet Calculate créé. 

Le reste du code me semble bien. Soyez modulaire. Vous pourriez lire votre programme d'une bien meilleure façon.

Voici mon morceau de code modulaire. Deux fichiers: Main.Java & Calculate.Java

Calculer.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();
    }
}
4
Sameer Sawla

Où vous avez écrit le code

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

Ici, vous devez exécuter la classe "Main" au lieu de la classe que vous avez créée au début du programme. Pour ce faire, cliquez sur Run Configuration (Exécuter la configuration) et recherchez ce nom de classe "Main", qui contient la méthode main à l'intérieur de cette méthode (public static void main (String args [])). Et vous obtiendrez votre sortie.

0
Sanjukta

vous semblez ne pas avoir créé de méthode principale, qui devrait probablement ressembler à ceci (je ne suis pas sûr) 

  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();
    }
}

le fait est que vous devriez avoir créé une méthode principale sous une classe et après la compilation, vous devez exécuter le fichier .class contenant la méthode principale. Dans ce cas, la méthode principale est sous RunThis i.e RunThis.class.

Je suis nouveau sur Java cela peut ou peut ne pas être la bonne réponse, corrigez-moi si je me trompe 

0
Sudhan Nadar