2012-08-31 86 views
0

即時工作在一個多類的任務,我必須添加一個課程,根據是否存在先決條件程序。 即時存儲我的課程內的程序類使用哈希表。 (以爲我會派上用場)然而,即時通訊存在一些麻煩,以確保這些前置資源存在。 這裏是一些代碼,香港專業教育學院目前竟能我如何使用hashmap鍵到一個字符串數組?

public boolean checkForCourseFeasiblity(AbstractCourse c) throws ProgramException 
{ 


    AbstractCourse[] tempArray = new AbstractCourse[0]; 


    tempArray= courses.keySet().toArray(tempArray); 


    String[] preReqsArray = new String[1]; 
    preReqsArray = c.getPreReqs(); 
    //gets all course values and stores them in tempArray 


    for(int i = 0; i < preReqsArray.length; i++) 
    { 

     if(courses.containsKey(preReqsArray[i])) 
     { 
      continue; 
     } 
     else if (!courses.containsKey(preReqsArray[i])) 
     { 
      throw new ProgramException("preReqs do not exist"); //? 

     } 


    } 
    return true; 
} 

確定,所以基本上,tempArray被存儲課程的HashMap裏面所有的按鍵組,我需要比較他們都與preReqs(這是一個字符串數組)。如果preReqs存在於鍵集內,則添加課程,如果他們不添加課程。如果課程通過我另外添加了一個例外,則返回true。請記住我的鍵集是Strings,例如一個鍵集值可以是「編程1」,並且課程所需的先決條件可以是「編程1」。如果是這種情況,請添加課程,因爲preset課程存在於密鑰集中。 我相信我的錯誤是當我用c.getPreReqs初始化mypreReqsArray(注意:getPreReqs是一個返回類型爲String []的getter)。 如果有人能夠幫助我解決我的困境,那將會非常棒。我嘗試儘可能地提供,我覺得我一直在過去3小時在圈子裏走動:( - 謝謝你

+0

'//獲取tempArray' 所有課程的值,並將它們存儲你是什麼 –

+0

如果初始化映射和數組,我們可以追蹤它並查看結果,我檢查了if(courses.containsKey(preReqsArray [i])),如果使用tempArray,它似乎聲明它,然後不真的做任何事情? )'和這一行是好的,請初始化他們的一些測試數據來追蹤錯誤。 – Heidarzadeh

回答

0

嘗試這樣的事情,你不需要tempArray。 「循環看起來很多更好了。如果你想拋出一個異常,我願意把這種邏輯在調用此方法的地方。

public boolean checkForCourseFeasiblity(AbstractCourse c) 
{ 

    for(String each : c.getPreReqs()) 
    { 
     if(! courses.containsKey(each)) 
     { 
      return false; 
     } 
    } 

    return true; 
} 
+0

嘿。我完全理解這一點,但我仍然得到一個空指針錯誤,所以即時通訊認爲它與我的c.getPreReqs()有關。也許它認爲它是一個String,即使get方法在返回類型中String [] – user1638114

+0

如果傳遞給此方法的'AbstractCourse c'爲null或者'courses'爲null,則可能會拋出空指針異常。 –

相關問題