2017-02-11 84 views
-3

這裏是我的源代碼,我將我的項目命名爲Animal,但是當我運行它時。定位我的主類時出錯。請幫幫我。我仍然是初學者,我很樂意學習更多。未找到Java主類(無錯誤)

package animal; 

public class Animal { 
    public Animal() { 
     System.out.println("A new animal has been created!"); 
    } 

    public void sleep() { 
     System.out.println("An animal sleeps..."); 
    } 

    public void eat() { 
     System.out.println("An animal eats..."); 
    } 
} 

public class Bird extends Animal { 
    public Bird() { 
     super(); 
     System.out.println("A new bird has been created!"); 
    } 

    @Override 
    public void sleep() { 
     System.out.println("A bird sleeps..."); 
    } 

    @Override 
    public void eat() { 
     System.out.println("A bird eats..."); 
    } 
} 

public class Dog extends Animal { 
    public Dog() { 
     super(); 
     System.out.println("A new dog has been created!"); 
    } 

    @Override 
    public void sleep() { 
     System.out.println("A dog sleeps..."); 
    } 

    @Override 
    public void eat() { 
     System.out.println("A dog eats..."); 
    } 
} 

public class MainClass { 
    public static void main(String[] args) { 
     Animal animal = new Animal(); 
     Bird bird = new Bird(); 
     Dog dog = new Dog(); 
     System.out.println(); 

     animal.sleep(); 
     animal.eat(); 
     bird.sleep(); 
     bird.eat(); 
     dog.sleep(); 
     dog.eat(); 
    } 
} 

請幫我這個。

+3

請張貼充分和完整的錯誤消息。而且你的問題令人困惑,因爲你有一個錯誤,但你說它沒有錯誤。它不能沒有錯誤,否則你不會在這裏問爲什麼它不起作用。 –

+0

另外,你的代碼格式不好,特別是你的代碼縮進。瞭解代碼格式不是爲了讓代碼「看起來不錯」,而是規則可以幫助您快速查看哪些代碼屬於哪個範圍,這有助於您調試和理解代碼。爲了您*的利益,您需要努力進行格式化,以便更輕鬆地調試問題以及*我們的*,這樣我們可以更輕鬆地瞭解您的代碼併爲您提供幫助。這不是一個微不足道的要求。 –

+0

你如何運行你的代碼? – Tom

回答

0

隨着研究你的代碼,發現錯誤只能在類的修飾符(公共)你聲明。

「你只能有一個公共類修飾符在Java源文件」

我們可以在這些限制單個源文件中聲明一個類:

  1. 每一個源文件應包含只有一個公共類,並且該公共類的名稱 應該類似於源文件的名稱 文件。
  2. 如果您在源文件中聲明主要方法,則主要 應該位於該公共類中。
  3. 如果源文件中沒有公共類,那麼主要方法 可以位於任何類中,我們可以給出源文件的任何名稱。

所以.. 您的代碼..

class Animal { 
     public Animal() { 
    System.out.println("A new animal has been created!"); 
    } 
    public void sleep() { 
    System.out.println("An animal sleeps..."); 
    } 
    public void eat() { 
    System.out.println("An animal eats..."); } 
    } 
    class Bird extends Animal { 
    public Bird() { 
    super(); 
    System.out.println("A new bird has been created!"); 
    } 
    @Override 
    public void sleep() { 
    System.out.println("A bird sleeps..."); 
    } 
    @Override 
    public void eat() { 
    System.out.println("A bird eats..."); 
    } 
    } 
    class Dog extends Animal { 
    public Dog() { 
    super(); 
    System.out.println("A new dog has been created!"); 
    } 
    @Override 
    public void sleep() { 
    System.out.println("A dog sleeps..."); 
    } 
    @Override 
    public void eat() { 
    System.out.println("A dog eats..."); 
     } 
     } 
    public class MainClass { 
    public static void main(String[] args) { 
     Animal animal = new Animal(); 
     Bird bird = new Bird(); 
     Dog dog = new Dog(); 
     System.out.println(); 

    animal.sleep(); 
    animal.eat(); 
    bird.sleep(); 
    bird.eat(); 
    dog.sleep(); 
    dog.eat();} 
    } 
+0

我現在明白了。我只是將主類更改爲我的項目名稱,並且工作正常。 – sawpaw300

0

理想情況下,您應該在同一個目錄中將Bird,Dog和Animal放在自己的文件中。然後你創建一個更多的類,一個具有主函數的測試者類,並且由於它與Bird,Dog和Animal位於同一個目錄中,所以它可以訪問它們,並且可以執行你的主類所做的事情。如果你需要把它全部放在一個文件中,那麼每個類頭文件只需要class Bird {等等。然後將文件重命名爲MainClass.java,它會運行。

0

請參考:Can a java file have more than one class?

簡稱:只能有每個java文件一個公共的頂級類。

所以,你應該修改你的代碼:

package Animal; 

class Animal { 
    public Animal() { 
     System.out.println("A new animal has been created!"); 
    } 

    public void sleep() { 
     System.out.println("An animal sleeps..."); 
    } 

    public void eat() { 
     System.out.println("An animal eats..."); 
    } 
} 

class Bird extends Animal { 
    public Bird() { 
     super(); 
     System.out.println("A new bird has been created!"); 
    } 

等等...