Java 错误:在类Calculate中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)

Java 错误:在类Calculate中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args),java,methods,main,Java,Methods,Main,我需要有关主方法的帮助,我遇到以下错误: 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

我需要有关主方法的帮助,我遇到以下错误:

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

在Java编程语言中,每个应用程序必须包含一个主方法,其签名为:

修改器public和static可以按任意顺序编写(publicstatic或staticpublic),但约定使用publicstatic,如上所示。您可以随意命名参数,但大多数程序员选择“args”或“argv”

正如你所说:

错误:缺少方法体,或声明抽象公共静态void main(字符串[]args);^这是我在类名后添加的结果

您可能还没有用body声明main(正如错误中的“;”所示)

您需要具有主体的main方法,这意味着您需要添加{和}:

public static void main(String[] args) {


}
将其添加到类定义中

虽然有时错误消息不是很清楚,但大多数情况下,它们包含足够的信息来指出问题。最糟糕的情况是,您可以在internet上搜索错误消息。此外,文档也非常有用。

我的建议:

  • 保持程序模块化。将Calculate类保存在单独的Calculate.java文件中,并创建一个调用main方法的新类。这将使代码可读
  • 要设置数字中的值,请使用构造函数。不要像上面使用的方法那样使用:

    公共无效设置编号(双fnum、双snum){ this.fn=fnum; this.sn=snum; }

    存在构造函数来初始化对象。这是他们的工作,他们非常擅长

  • Calculate类成员的getter似乎已经到位,但setter却没有。getter和setter是java高效编程桥梁中的一个重要部分。将setter也用于fnum和snum

  • 在main类中,使用新操作符和适当的构造函数创建Calculate对象

  • 使用创建的Calculate对象调用getAnswer()方法

其余的代码在我看来很好。 模块化。你可以更好地阅读你的程序

这是我的模块化代码。 两个文件:Main.java和Calculate.java

Calculate.java 主类
您在哪里编写了代码

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

在这里,您必须运行类“Main”,而不是在程序开始时创建的类。为此,请转到运行配置并搜索此类名称“Main”,其中包含Main方法(公共静态void Main(字符串args[]))。您将获得您的输出。

重新启动IDE,一切都会好起来。

您似乎没有创建一个主方法,它可能看起来像这样(我不确定)

关键是你应该在某个类下创建一个main方法,编译后你应该运行包含main方法的.class文件。在这种情况下,main方法在RunThis下,即RunThis.class


我是java新手这可能是正确的答案,也可能不是正确的答案,如果我错了请纠正我

运行时正在告诉您确切的操作方法-您是否尝试过按照它的说明操作?(运行程序时您希望收到什么呼叫?)请再次阅读错误…我尝试输入“public static void main(String[]args)但是在运行代码之后,它给了我太多的错误,我想我必须更改“void”之类的东西。非常抱歉,仍然是学生。您在
java
命令上命名的类必须包含一个
main
方法,并具有声明的属性。这是程序开始执行的地方。
main
可以立即调用另一个方法,甚至是另一个类,但是如果没有
main
java
命令不知道从哪里开始。您可能在没有关联方法体的情况下输入了“public static void main(String[]args)”。它是一种方法,就像你的
setNumber
是一种方法一样。令人困惑的是:“创建一个调用主方法的新类。”又是什么主方法?@Ingo:现在清楚了吗?更好了。尽管我认为没有理由不在计算机本身设置一个main。(我过去几乎每堂课都有一个,它只是执行一个非常基本的自我测试,或者其他什么。)@Ingo:我同意。这实际上取决于程序员自己。对我来说,它只是感觉更有条理,这就是为什么我把它作为一个单独的文件保存。在每个java文件中保留一个main并没有什么害处:)为什么OP需要一个新类?为什么不直接告诉他/她如何将main方法添加到他/她现有的类中呢?有时候最复杂的解决方案是最简单的步骤。:)在我的例子中,eclipse的“RunAs”配置突然切换到一个新创建的类,半个小时后我不明白为什么它需要在非主类中使用main方法。虽然重新启动没有帮助,但您给了我检查IDE设置的线索。这也为我解决了问题:)
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("-------------------");
    }
}
public class Main {
    public static void main(String args[])
    {
        Calculate obj = new Calculate(1,2,'+');
        obj.getAnswer();
    }
}
public class Main {
    public static void main(String args[])
    {
        Calculate obj = new Calculate(1,2,'+');
        obj.getAnswer();
    }
}
  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();
    }
}