4

私は自分のコースで Java を学んでいますが、レンガの壁にぶつかりました。私は、単純なコマンド ライン プログラムの開発を任されています。作業を簡単にするために、次のサンプル コードに変更を加えて、最初からやり直す必要がないようにしました。

package assignment;

public class Main {
private final static String[] mainMenuOpts = {"Students","Lecturers","Admin","Exit"};
private final static String[] studentMenuOpts = {"Add Student","List all Students","Find a Student","Return to Main Menu"};
private Menu mainMenu = new Menu("MAIN MENU",mainMenuOpts);
private Menu studentMenu = new Menu("STUDENT MENU",studentMenuOpts);
private DataStore data = new DataStore();
private java.io.PrintStream out = System.out;
private ReadKb reader = new ReadKb();
/** Creates a new instance of Main */
public Main() {
    run();
}

private void run(){
    int ret = mainMenu.display();
    while(true){
        switch(ret){
            case 1: students();break;
            case 2: lecturers(); break;
            case 3: admin(); break;
            case 4: exit(); break;
        }
        ret = mainMenu.display();
    }
}
private void students(){
    int ret = studentMenu.display();
    while(ret != 4){
        switch(ret){
            case 1: addStudent();break;
            case 2: listStudents(); break;
            case 3: findStudent(); break;
        }
        ret = studentMenu.display();
    }
}
private void lecturers(){
    out.println("\nLecturers not yet implemented");
}
private void admin(){
    out.println("\nAdmin not yet implemented");
}
//Student methods
private void addStudent(){
    out.println("\n\tAdd New Student");
    //prompt for details
    //add student to the datastore
    //ask if they want to enter another student - 
    // if so call addStudent again
    //otherwise the method completes and the studentMenu will display again

}
private void listStudents(){
    out.println("\n\tStudent Listing");
    //list all students from the datastore
}
private void findStudent(){
    out.println("\n\tFind Student");
    out.print("Enter Search String: ");
    //reasd search text
    //use datastore method to get list of students that contain the search string
    //display matching students

}
// end Student methods
private void exit() {
    data.save();  //call the datastore method that will save to file
    out.println("\n\nGoodbye :)");
    System.exit(0);
    }
}

NetBeans を使用していますが、プロジェクトを実行しようとすると、次のエラーが発生します。

Error: Main method not found in class assignment.Main, please define the main method as: public static void main(String[] args)

コードをよりよく理解できるように、プログラムを実行したいだけです。エラーは理解できますが、このテキストの壁のどこに main メソッドを実装すればよいかわかりません。私は何時間も実験してきましたが、明らかに初心者としてはまったく役に立ちません. どんな助けでも大歓迎です。

4

7 に答える 7

8

あなたが現在持っているのは Main という名前の単なるコンストラクターです。Java が必要とするのは、次のような正確なシグネチャを持つ main メソッドです。

public static void main(String[] args)
  • public・外部から呼び出せるようにする

  • static- クラスのインスタンスを作成する必要がないように

  • void- 値を返さない

  • args- プログラムの実行中に指定できるコマンド ライン パラメータの配列

これは、アプリケーションのエントリ ポイントです。

現在のコードが呼び出されているとき、JVM は main メソッドを見つけようとしていますが、コードに存在しないため、受け取った例外をスローしています。

投稿で初心者について言及したので、Java は大文字と小文字を区別する言語mainありMain、Java では同じではないことに言及する価値があります。

参照:入門チュートリアル.

于 2012-05-22T16:14:03.033 に答える
6

の正しい署名mainは次のとおりです。

public static void main(String[] args) {
   new Main();
}

あなたが投稿したエラーメッセージにも書かれています。

;コンストラクターから を削除します。

public Main() {
    run();
}
于 2012-05-22T16:10:57.283 に答える
4

プログラムで main() メソッドを使用する必要があります。ここからプログラムの実行が始まります。

お気に入り

public static void main(String args[])
{
  //This is the starting point of your program.
}

このメソッドはクラス内に出現する必要がありますが、任意のクラスにすることができます。Java 言語では、Java インタープリターを使用してクラスを実行すると、ランタイム システムはクラスの main() メソッドを呼び出して開始します。main() メソッドは、アプリケーションの実行に必要な他のすべてのメソッドを呼び出します。

main() メソッドは、1 つのパラメーター (文字列の配列) を受け入れます。このパラメーターは、ランタイム システムがコマンド ライン引数をアプリケーションに渡すメカニズムです。

于 2012-05-22T16:13:38.100 に答える
2

次のシグネチャを持つメソッドを探しています。

public static void main(String[] args)

コードを実行するには、mainメソッドは次のようになります。

public static void main(String[] args)
{
    new Main();
}
于 2012-05-22T16:11:15.313 に答える
2

かなり役立つエラー メッセージが示すように、main メソッドが必要です。Java チュートリアルを参照してください

于 2012-05-22T16:12:22.730 に答える
2

mainアプリケーションを実行するには、メソッドが存在する必要があります。Java アプリケーションは、プログラムの実行をどこから開始するかを知るために必要です。

選択したクラスにメソッドを配置し、ファイルを右クリックして [ファイルの実行] を選択します。

 public static void main(String[] args)
 {
     // your code here
 }
于 2012-05-22T16:24:41.333 に答える
1

メインクラスにメインメソッドを追加しJVMて、「メイン」名のクラスではなく、どこから開始するかを知る必要があります。

public static void main(String[] args) {
   new Main();
}
于 2012-05-22T16:12:24.767 に答える