2013-05-27 52 views
0

我試圖在本TutorialMission中使用用作映射的文件「TutorialMap」。我總是被告知MapReader「reader」需要是靜態的,但是當它是靜態的時候,我會被告知「未處理的異常類型FileNotFoundException」,並在reader的構造函數中出現錯誤。對象構造函數的Java未處理文件類型

static MapReader reader = new MapReader("TutorialMap"); 

static Territory[][] missionMap = reader.getMap(); 

public TutorialMission() throws FileNotFoundException { 

    super(missionMap, Size, AircraftCarrierID, AircraftCarrierID); 

} 

超類的構造函數:

public class MissionIF extends Map { 
public MissionIF(Territory[][] load, String size, int StartingMoney, int powerLevel) 
{ 
    // Set money per mission. 
    super(); 

感謝您的時間。

+0

你的超類的構造函數正在啓動這個異常,請張貼代碼 – fmodos

+0

什麼是TutorialMap?它是一個文件嗎?如果是,那麼它必須有一個像TutorialMap.txt或TutorialMap.dat這樣的擴展名。成爲'FileNotFoundException'的原因。 –

+0

錯誤是你nderlining讀者聲明,包裝「新的MapReader(」TutorialMap.txt「)」 – user1933516

回答

0

我不知道爲什麼它必須是靜態的,但由於構造函數拋出檢查異常,它在調用的地方進行處理。因此做這樣的事情:

static MapReader reader = null; 

static Territory[][] missionMap = null; 

static { 
    try { 

     reader = new MapReader("TutorialMap"); 
    } catch(FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    missionMap = reader.getMap(); 

    } 
+0

這擺脫了我在問題中提到的錯誤。我不知道你可以創造一個靜態的領域。 – user1933516

+0

我很高興它幫助:) –

0

圍繞着使用try catch塊拋出「未處理的異常類型FileNotFoundException」的代碼。你正在得到這個異常,因爲它的檢查異常,你被迫處理這個異常。我會建議使用像eclipse這樣的IDE(如果你沒有使用它),這對開發很有幫助。

try { 
     reader = new MapReader("TutorialMap"); 
    } catch(FileNotFoundException e) { 
     throw new RunTimeException(e); 
    } 
+0

我正在使用Eclipse,它向我顯示錯誤。當我嘗試配置try catch塊時,在任何嘗試,捕獲或包含的{}行上出現錯誤。 – user1933516

+0

看到我更新的帖子 –

0

編譯器需要您reader是靜態的,因爲你初始化其他靜態變量missionMap時調用它。

當你將它標記爲靜態編譯器前進時,發現你沒有捕獲到構造函數TutorialMission拋出的異常。

因爲我不明白你真正想做的事情我只能建議你:

如果你想所有這些東西是靜態初始化讀者進入靜態初始化和捕獲異常:

static MapReader reader; 
static { 
    try { 
     reader = new MapReader("TutorialMap"); 
    } catch(FileNotFoundException e) { 
     throw new IllegalArgumentException(e); 
    } 
} 

您檢查的異常現在由未選中的異常包裝。

或者(如果你真的不希望持有靜態變量這個數據只是刪除static修飾符,並在構造函數中執行initalization:

public TutorialMission(MapReader reader, Territory[][] missionMap) throws FileNotFoundException { 
    super(missionMap, Size, AircraftCarrierID, AircraftCarrierID); 
    missionMap = reader.getMap(); 
} 

現在調用者負責創建和路過此地的reader

+0

我試過這樣做,但變量必須在它命中超級語句之前爲空,並且超級語句必須是構造函數方法中的第一件事。 – user1933516