java - MAIN有问题请指教

标签 java

<分区>

抱歉,我是 Java 新手,我的代码有问题。我通读了这些线程,并看到了许多关于此特定错误的示例 (java.lang.NoSuchMethodError: main Exception in thread "main")。我似乎无法想清楚要在代码中添加 (static void main(String[] args)) 的位置。如果你们能指出我正确的方向,我将不胜感激。

这是我的:

public class Employee {


String name;
String department;

double hourlyRate;

Employee(String name, String department, double hourlyRate) {
    this.name = name;
    this.department = department;
    this.hourlyRate = hourlyRate;
}

public void setDepartment(String department) {
    this.department = department;
}

public void setHourlyRate(double hourlyRate) {
    this.hourlyRate = hourlyRate;
}

public String getNameAndDepartment() {
    return name + " " + department;
}

double weeklyPay(int numOfHourWorked) {
    if (numOfHourWorked < 40) {
        return (numOfHourWorked * hourlyRate);
    } else
        return (40 * hourlyRate);

}
}

class UnionEmployee extends Employee {

double dues;

UnionEmployee(String name, String department, double hourlyRate, double dues) {
    super(name, department, hourlyRate);
    this.dues = dues;
}

public void setDues(double dues) {
    this.dues = dues;
}

double weeklyPay(int numOfHourWorked) {
    if (numOfHourWorked <= 40) {
        return (super.weeklyPay(numOfHourWorked));
    } else
return ((super.weeklyPay(40) + ((numOfHourWorked - 40) * hourlyRate * 1.5)) - dues);
}
}

class CommissionEmployee extends Employee {

double commisionRate;
double salesAmount;

CommissionEmployee(String name, String department, double hourlyRate) {
    super(name, department, hourlyRate);
}

public void setCommisionRate(double commisionRate) {
    this.commisionRate = commisionRate;
}

public void setSalesAmount(double salesAmount) {
    this.salesAmount = salesAmount;
}

double weeklyPay(int numOfHourWorked) {
    return (super.weeklyPay(numOfHourWorked) + (commisionRate * salesAmount));
}

}

class TestEmployee {
UnionEmployee uEmp = new UnionEmployee(null, null, 0, 0);
CommissionEmployee cEmp = new CommissionEmployee(null, null, 0);
Employee emp = new Employee(null, null, 0);

void display(Employee emp, int numOfHourWorked) {
    System.out.println("Name and department :" + emp.getNameAndDepartment    ());
    System.out.println("Weekly pay of employee :"
            + emp.weeklyPay(numOfHourWorked));
}

void display(UnionEmployee uEmp, CommissionEmployee cEmp,
        int numOfHourWorked) {
    System.out.println("Weekly Pay for UnionEmployee"
            + uEmp.weeklyPay(numOfHourWorked));
    System.out.println("Weekly Pay for UnionEmployee"
            + cEmp.weeklyPay(numOfHourWorked));
}

}

好的,所以我开始将每个类分成不同的文件。在浏览 Java 教程时,它说添加 static void main(String[] args) 教程设置它的方式是这样的:

public class Misc {
static void main(String[] args) {

//body
   }
}

所以我这样做了:

class TestEmployee {

static void main(String[] args) {

UnionEmployee uEmp = new UnionEmployee(null, null, 0, 0);
CommissionEmployee cEmp = new CommissionEmployee(null, null, 0);
Employee emp = new Employee(null, null, 0);

void display(Employee emp, int numOfHourWorked) {
    System.out.println("Name and department :" + emp.getNameAndDepartment    ());
    System.out.println("Weekly pay of employee :"
            + emp.weeklyPay(numOfHourWorked));
}

void display(UnionEmployee uEmp, CommissionEmployee cEmp,
        int numOfHourWorked) {
    System.out.println("Weekly Pay for UnionEmployee"
            + uEmp.weeklyPay(numOfHourWorked));
    System.out.println("Weekly Pay for UnionEmployee"
            + cEmp.weeklyPay(numOfHourWorked));
}

}

}

仍然得到相同的错误:(java.lang.NoSuchMethodError:线程“main”中的主要异常)。

好的,我添加 public 但现在我明白了:

线程“主”java.lang.Error 中的异常: Unresolved 编译问题:

void is an invalid type for the variable display
Syntax error on token "(", ; expected
Duplicate local variable emp
Syntax error on token ",", ; expected
Syntax error on token ")", ; expected
void is an invalid type for the variable display
Syntax error on token "(", ; expected
Duplicate local variable uEmp
Syntax error on token ",", ; expected
Duplicate local variable cEmp
Syntax error on token ",", ; expected
Duplicate local variable numOfHourWorked
Syntax error on token ")", ; expected

at TestEmployee.main(TestEmployee.java:9)

最佳答案

你的 main 问题是它不存在,你需要在你的程序中放一个让它运行。将它放在主类中,无论哪个,但是虽然它需要在类的内部,在定义类的大括号内,但您还必须确保不将它放在另一个方法中。

上面,我将它放在 TestEmployee 中。

我还会注意确保上面的每个类都被声明为公共(public)的并且在其自己的 文件中。所以上面包含 4 个类的代码应该由 4 个文件组成。


编辑
此外,请确保将您的主要方法声明为 public 方法,正如@Aniket 在下面的评论中指出的那样。


编辑2

  • 您仍然没有将 main 声明为公共(public)方法。
  • 您在主方法中嵌入了方法。请记住,在 Java 中您不能这样做,因为所有方法都需要是类级别的。将它们从 main 方法中移除。
  • 至少可以说,您的代码缩进很糟糕,这将使您或我们非常难以发现您的编码问题。您将需要投入时间和精力来正确缩进代码。如果这样做,您会立即发现方法中有方法。

关于java - MAIN有问题请指教,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886227/

相关文章:

作为强类型类的 Java .properties 文件

java - 梯度错误:Execution failed for task ':app:transformClassesWithJarMergingForDebug'

java - BlowFish 解密 - nCFB 模式

java - 在java中查找两个多重集的交集

java - gradle从项目中排除暂时依赖

java - LibGDX 路径 (CatmullRomSpline) 恒速

java - 使用 Gson 解析嵌套数组的 Json

java - 不同层的实体组合

java - Maven构建成功但仍然出现404错误未找到

java - 如何在每次触摸屏幕时绘制一个新的圆圈?