Fout: Hoofdmethode niet gevonden in klasse Berekenen, definieer de hoofdmethode als: public static void main(String[] args)

Ik heb hulp nodig met de hoofdmethode, ik krijg deze foutmelding:

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

Hier is de 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("-------------------");
    }
}

Antwoord 1, Autoriteit 100%

Start uw IDE opnieuw en alles komt goed


Antwoord 2, Autoriteit 77%

Vanaf de docs

In de taal van de Java-programmeertoets moet elke aanvraag een hoofdmethode bevatten waarvan de handtekening is:

public static void main(String[] args)

Het publiek en de statische modifiers kunnen in beide opdracht (openbaar statisch of statisch publiek) worden geschreven, maar het verdrag is om openbare statische statische te gebruiken zoals hierboven weergegeven. U kunt het argument noemen dat u wilt, maar de meeste programmeurs kiezen “Args” of “ARGV”.

Zoals u zegt:

FOUT: ontbrekende methode-instantie, of verklaart abstracte openbare statische void-hoofd (string [] args); ^ Dit is wat ik heb nadat ik het heb toegevoegd na de klasnaam

U hebt waarschijnlijk niet de hoofdinformatie verklaard (AS ‘; “zou in uw fout suggereren).

U moet hoofdmethode hebben met een lichaam, wat betekent dat u {en} moet toevoegen:

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

voeg het toe in je klasdefinitie.

Hoewel soms foutmeldingen niet erg duidelijk zijn, bevatten ze meestal voldoende informatie om naar het probleem te wijzen. Worstenshaal, u kunt internet zoeken naar het foutbericht. Ook kan documentatie erg nuttig zijn.


Antwoord 3, Autoriteit 38%

Mijn suggesties:

  • Houd het programma modulair. Houd de rekenklasse in een afzonderlijk calculate.java-bestand en maak een nieuwe klasse die de hoofdmethode oproept. Dit zou de code leesbaar maken.
  • Gebruik Constructors in het instellen van de waarden in het nummer. Gebruik niet zoals de methoden die u hierboven hebt gebruikt zoals:

    Public Void SetNumber (Double Fnum, Double Snum) {
    this.fn = fnum;
    this.Sn = SNUM;
    }

    Constructors bestaat om het object te initialiseren. Dit is hun werk en ze zijn er best goed.

  • Getters voor leden van het berekenen van de klas lijken op zijn plaats. Maar Setters zijn dat niet. Getters en Setters dienen als een belangrijk blok in de brug van efficiënte programmering met Java. Zet Setters ook voor FNUM en SNUM

  • Maak in de hoofdklasse een berekenen object met behulp van de nieuwe operator en de constructor op zijn plaats.

  • Bel de methode Getanswer () met het gemaakte berekeningsobject.

Rest van de code ziet er goed voor mij.
Modulair zijn. U kunt uw programma op een veel betere manier lezen.

Hier is mijn modulair stuk code.
Twee bestanden: main.java & amp; Berekenen.java

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

Antwoord 4

waar u de code hebt geschreven

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

Hier moet je de klasse “Main” uitvoeren in plaats van de klasse die je aan het begin van het programma hebt gemaakt. Ga hiervoor naar Configuratie uitvoeren en zoek naar deze klassenaam “Main” die de hoofdmethode hierin heeft (public static void main (String args [])). En je krijgt je output.


Antwoord 5

het lijkt erop dat je geen hoofdmethode hebt gemaakt, die er waarschijnlijk ongeveer zo uit zou moeten zien (ik weet het niet zeker)

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

het punt is dat je een hoofdmethode onder een bepaalde klasse had moeten maken en dat je na het compileren het .class-bestand met de hoofdmethode zou moeten uitvoeren. In dit geval is de hoofdmethode onder RunThis, d.w.z. RunThis.class.

Ik ben nieuw in Java, dit kan wel of niet het juiste antwoord zijn, corrigeer me als ik het mis heb

Other episodes