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()方法
您在哪里编写了代码
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();
}
}