web-dev-qa-db-ja.com

エラー:メインメソッドがクラスCalculateに見つかりません。メインメソッドを次のように定義してください:public static void main(String [] args)

私はメインメソッドの助けが必要です、私はこのエラーを得ています:

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

これがコードです:

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

IDEを再起動すると、すべてうまくいきます

11
Rohit kumar

docs から

Javaプログラミング言語では、すべてのアプリケーションに、シグネチャが次のメインメソッドが含まれている必要があります。

public static void main(String[] args)

修飾子publicとstaticはどちらの順序でも(public staticまたはstatic public)記述できますが、上記のように規約はpublic staticを使用することです。引数には任意の名前を付けることができますが、ほとんどのプログラマーは「args」または「argv」を選択します。

あなたが言うように:

エラー:メソッド本体が欠落しているか、抽象public static void main(String [] args);を宣言しています^これはクラス名の後に追加したものです

おそらく本文でmainを宣言していません( '; "がエラーを示唆しているため)。

本文を含むmainメソッドが必要です。つまり、{と}を追加する必要があります。

public static void main(String[] args) {


}

クラス定義内に追加します。

最も重要なことは、あなたが得ているドキュメントとエラーの説明を読むことを学ぶことです。それらは何度もあなたを助けるでしょう。

6
Melquiades

私の提案:

  • プログラムをモジュール化します。 Calculateクラスを別のCalculate.Javaファイルに保持し、mainメソッドを呼び出す新しいクラスを作成します。これにより、コードが読みやすくなります。
  • 数値に値を設定するには、コンストラクターを使用します。上記で使用した方法のように使用しないでください。

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

    オブジェクトを初期化するコンストラクターが存在します。これは彼らの仕事であり、かなり上手です。

  • Calculateクラスのメンバーのゲッターが用意されているようです。しかし、セッターはそうではありません。ゲッターとセッターは、Javaを使用した効率的なプログラミングのブリッジにおける1つの重要なブロックとして機能します。 fnumとsnumのセッターも置く

  • メインクラスで、new演算子とコンストラクターを使用してCalculateオブジェクトを作成します。

  • 作成したCalculateオブジェクトを使用してgetAnswer()メソッドを呼び出します。

残りのコードは私には問題なく見えます。モジュール式である。あなたはもっと良い方法であなたのプログラムを読むことができます。

これが私のモジュラーコードです。 2つのファイル:Main.Javaと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();
    }
}
5
Sameer Sawla

コードを書いた場所

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

ここでは、プログラムの開始時に作成したクラスの代わりに、クラス「Main」を実行する必要があります。これを行うには、実行構成に移動して、this(public static void main(String args []))内にmainメソッドを持っているこのクラス名「Main」を検索します。そして、あなたはあなたの出力を取得します。

0
Sanjukta

あなたはおそらくおそらくこのようなものになるはずのメインメソッドを作成していないようです(私はわかりません)

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

重要なのは、あるクラスの下にmainメソッドを作成し、コンパイル後にmainメソッドを含む.classファイルを実行する必要があるということです。この場合、メインメソッドはRunThis、つまりRunThis.classの下にあります。

私はJavaはこれが正しい答えかもしれないし、そうでないかもしれません。私が間違っているなら私を訂正してください

0
Sudhan Nadar