5

申し訳ありませんが、私は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 Exception in thread "main")。

OK私はパブリックを追加しましたが、今はこれを取得しています:

スレッド「メイン」の例外 java.lang.Error: 未解決のコンパイルの問題:

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)
4

1 に答える 1

5

main の問題は、それが存在しないことであり、それを実行するにはプログラムに入れる必要があります。どちらであっても、メインクラスに配置しますが、クラス、クラスを定義する中括弧内に配置する必要がありますが、別のメソッド内に配置しないようにする必要もあります。

上記では、TestEmployee に配置します。

また、上記のすべてのクラスがパブリックとして宣言され、独自のファイルに含まれていることを確認するように注意します。したがって、4 つのクラスを含む上記のコードは、4 つのファイルで構成される必要があります。


編集
また、以下のコメントに記載されている @Aniketのように、必ずメイン メソッドをパブリックメソッドとして宣言してください。


編集 2

  • あなたはまだメインをパブリックメソッドとして宣言していません。
  • メイン メソッド内にメソッドが埋め込まれています。すべてのメソッドがクラスレベルである必要があるため、Java ではこれを行うことができないことに注意してください。それらをメイン メソッドから取り出します。
  • あなたのコードのインデントは控えめに言ってもひどいものです。これにより、あなたや私たちがあなたのコーディングの問題を見つけるのが非常に難しくなります. コードを適切にインデントするために時間と労力を費やす必要があります。これを行うと、メソッドの中にメソッドがあることがすぐにわかります。
于 2013-11-10T04:20:52.817 に答える