我需要主方法的帮助,我得到了这个错误:
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 %.2fn", x);
System.out.println("-------------------");
}
}
重新启动IDE,一切都会好起来的
从文档
在Java编程语言中,每个应用程序都必须包含一个主要方法,其签名为:
public static void main(String[] args)
修饰符public和static可以按任意顺序编写(public static或static public),但约定是使用public static,如上所示。你可以随心所欲地命名这个论点,但大多数程序员都会选择"args";或";argv";。
正如你所说:
错误:缺少方法体,或声明抽象公共静态void main(String[]args);^这是我在类名后添加它后得到的
您可能还没有用主体声明main(正如"在错误中所暗示的那样)。
你需要有一个主体的main方法,这意味着你需要添加{和}:
public static void main(String[] args) {
}
将其添加到类定义中。
尽管有时错误消息不是很清楚,但大多数时候它们包含足够的信息来指出问题。最坏的情况是,你可以在互联网上搜索错误消息。此外,文档也非常有用。
我的建议:
- 保持程序模块化。将Calculate类保存在一个单独的Calculate.java文件中,并创建一个调用main方法的新类。这将使代码可读
-
要设置数字中的值,请使用构造函数。不要像上面使用的方法一样使用,比如:
public void setNumber(双fnum、双snum){this.fn=fnum;this.sn=snum;}
构造函数用于初始化对象。这是他们的工作,他们非常擅长
-
Calculate类成员的Getter似乎已就位。但二传手不是。Getters和setter是使用java进行高效编程的桥梁中的一个重要部分。为fnum和snum以及设置setter
-
在主类中,使用新的运算符和适当的构造函数创建一个Calculate对象。
-
使用创建的Calculate对象调用getAnswer()方法。
代码的其余部分对我来说很好。模块化。你可以用更好的方式阅读你的程序。
这是我的模块化代码。两个文件: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 %.2fn", x);
System.out.println("-------------------");
}
}
Main.java
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();
}
}
在这里,您必须运行类"Main",而不是在程序开始时创建的类。要做到这一点,请转到Run Configuration并搜索这个类名"Main",它里面有Main方法(public static void Main(String args[]))。你会得到你的输出。
您似乎还没有创建一个主方法,它可能看起来像这样(我不确定)
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新手,这可能是正确的答案,也可能不是正确的答案。如果我的错误,请纠正我