我需要有关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(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("-------------------");
}
}
答案 0 :(得分:8)
重新启动IDE,一切都会好起来
答案 1 :(得分:6)
来自docs
在Java编程语言中,每个应用程序都必须包含一个签名为:
的main方法
public static void main(String[] args)
修饰符public和static可以按任意顺序编写(public static或static public),但约定是使用public static,如上所示。您可以根据需要为参数命名,但大多数程序员选择“args”或“argv”。
正如你所说:
错误:缺少方法体,或声明抽象的public static void main(String [] args); ^这是我在课程名称
之后添加它后得到的
你可能没有用正文声明main(因为';'会在你的错误中暗示)。
你需要有一个主体的主方法,这意味着你需要添加{和}:
public static void main(String[] args) {
}
在类定义中添加它。
最重要的是,请学习阅读您所获得的文档和错误说明,它们会帮助您很多次。
答案 2 :(得分:4)
我的建议:
要设置数字中的值,请使用构造函数。不要像上面使用的方法一样使用:
public void setNumber(double fnum,double snum){ this.fn = fnum; this.sn = snum; }
构造函数用于初始化对象。这是他们的工作,他们非常擅长。
计算类成员的Getters似乎就位。但是,制定者不是。 Getters和setter是使用java进行高效编程的桥梁中的一个重要块。同时为fnum和snum设置setter
在主类中,使用new运算符和构造函数创建一个Calculate对象。
使用创建的Calculate对象调用getAnswer()方法。
其余代码对我来说很好看。 模块化。你可以用更好的方式阅读你的程序。
这是我的模块化代码。 两个文件:Main.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("-------------------");
}
}
public class Main {
public static void main(String args[])
{
Calculate obj = new Calculate(1,2,'+');
obj.getAnswer();
}
}
答案 3 :(得分:0)
您编写代码的地方
public class Main {
public static void main(String args[])
{
Calculate obj = new Calculate(1,2,'+');
obj.getAnswer();
}
}
在这里你必须运行课程" Main"而不是您在程序开始时创建的类。为此,请转到“运行配置”并搜索此类名称" Main"其中包含main方法(public static void main(String args []))。你会得到你的输出。
答案 4 :(得分:0)
你好像没有创建一个主方法,它应该看起来像这样(我不确定)
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文件。在这种情况下,main方法在RunThis下,即RunThis.class。
我是java新手,这可能是也可能不是正确答案,如果我错了,请纠正我