我正在進行某種測驗,並有一系列問題和答案,通過控制器傳遞給我的視圖類。人們可以在一個頁面上提問並回答問題,然後我的系統會「收集」這些問題,以便從中進行測驗。當我的其他人應該阻止它時,爲什麼會出現IndexOutOfBoundsException?
如果您是第一個啓動程序/測驗的人,則問題列表爲空。因此,我想用if/else子句檢查一個空的測驗,如果case似乎工作正常,但其他情況下拋出一個IndexOutOfBoundsException
,我不明白爲什麼。我認爲在問題列表爲空時不會使用else部分,因此不應引發異常。如若....
視圖類:
@(questionList: List[Question], answerList: List[Answer], answerRadioForm: Form[Answer])
@if(questionList.length == 0){
No questions yet!
}
else {
<!-- As only the highest ranked question gets put into the List, there is only one entry on first place -->
<b>@questionList.get(0).questionText</b>
@for(question <- questionList) {
@question.questionText - @question.ownerID <br>
}
}
錯誤:
[IndexOutOfBoundsException: Index: 0, Size: 0]
49 <b>"""),_display_(/*27.8*/questionList/*27.20*/.get(0).questionText),format.raw/*27.40*/("""</b>
所以,我在這裏失蹤?
只要注意:我可以使用@if(questionList> 0)...'然後我的代碼工作,但我不明白爲什麼其他人不會做同樣的事情。有任何想法嗎? – hamena314
你的代碼看起來應該可以工作 - 我想知道'=='操作符是否會出現一個錯誤的否定,可能是由於類型? (也就是說,'questionList.length'與文字'0'是不同的類型,所以它們是平凡的不相等的)。通常,我更喜歡使用@if(questionList.isEmpty)或類似的方法來避免這樣的問題。 –
我用'@if(questionList.isEmpty)'測試了它,沒有改變。但是,在嘗試這個時,我發現解決方案:if-bracket和else之間不能有return/newline ......所以感謝提示! – hamena314