2015-04-07 82 views
0

我正在使用BlueJ IDE。我有一個名爲ProgramOne的主類,另一個類StarTurtle(旨在用於實例方法)。BlueJ中的Java不執行主類

這裏是ProgramOne代碼:

 public class ProgramOne 
     { 
    public static void main (String[ ] args) { 
      StarTurtle turtle1 = new StarTurtle(); 
      int result = turtle1.StartTurtle(5); 

    } 
} 

這裏是StarTurtle代碼:

public class StarTurtle 
{ 

private int points;  

public int StartTurtle(int x) 
{ 
points = x; 

Turtle sue; 
sue = new Turtle(); 
sue.paint (90, 40); 

} 

} 

(該turtle方法中,你看到的是從我這裏沒有粘貼其他兩個班這些類可在http://www.cs.ccsu.edu/~jones/book.htm手冊中找到)

該代碼僅編譯,並且th無法執行。但是,沒有選擇執行void main (String[ ] args),應該有執行主類。有誰知道這是什麼原因?我假設代碼本身存在問題。 StarTurtle類確實執行,但主類ProgramOne沒有,這導致我相信問題在於ProgramOne類。

當我的意思是「選項,執行」,我指的是這個BlueJ的功能:

BlueJ

回答

0

當你調用從類ProgramOne的主要方法,你已經創建StarTurtle turtle1的一個實例。但是當通過調用turtle1.StartTurtle(5)方法賦值結果變量時,該變量中不存儲任何內容。問題是你的StarTurtle類中的這個函數有問題。你已經將public int StartTurtle(int x)函數定義爲返回類型,但實際上它沒有返回任何東西。因此,您需要在該代碼塊中添加一條return語句。

public class StarTurtle { 
    private int points; 
    public int StartTurtle(int x){ 
     points = x; 
     Turtle sue; 
     sue = new Turtle(); 
     sue.paint (90, 40); 
     return points; 
    } 
} 

但是,另一方面,雖然他們的工作,你的類和函數是不正確的。你的課應該是這樣的。

public class ProgramOne{ 
    public static void main (String[ ] args) { 
      StarTurtle turtle1 = new StarTurtle(); 
      turtle1.StartTurtle(); 
    } 
} 

public class StarTurtle { 
    //Void type of method instead of previous return type 
    public void StartTurtle(){ 
     Turtle sue; 
     sue = new Turtle(); 
     sue.paint (900, 550); 
    } 
} 
+0

謝謝你的提示,但是,主類仍然沒有執行。 – seanlevan

+0

您是否嘗試執行新的ProgramOne()或主要方法(void main(String [] args)?)如果執行了ProgramOne(),則沒有執行任何操作,因爲您尚未初始化ProgramOne類中的任何構造函數。主函數,我相信程序將會成功執行,或者如果你想執行調用新的ProgramOne()函數的主類,你必須初始化構造函數 –

+0

沒有辦法做,因爲BlueJ似乎認爲那裏是一個錯誤@ranjit kaliraj – seanlevan