我正在进行某种测验,并有一系列问题和答案,通过控制器传递给我的视图类。人们可以在一个页面上提问并回答问题,然后我的系统会“收集”这些问题,以便从中进行测验。当我的其他人应该阻止它时,为什么会出现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