我在堆栈跟踪显示以下错误: 引起原因:java.lang.IllegalArgumentException:n必须为正。 它显示了这一行的错误。在我正在学习制作此应用程序的教程中,他们使用以下方法解决了此问题:if(pieces.size> = 2)。但 显然,它不起作用。
private fun readDictionaryfile(){
val reader = Scanner(resources.openRawResource(R.raw.recidva))
while (reader.hasNextLine()){
val line = reader.nextLine()
Log.d("Mihajlo","the line is:$line")
val pieces = line.split("\t")
if (pieces.size >= 2){
words.add(pieces[0])
wordToDefn.put(pieces[0],pieces[1])
}
}
}
private fun setupList() {
val rand = Random()
val index = rand.nextInt(words.size)
val randomWor = words[index]
randomWord.text = randomWor
defn.clear()
defn.add(wordToDefn[randomWor]!!)
words.shuffle()
for (otherWord in words.subList(0,4)){
if (otherWord == randomWor || defn.size > 5){
continue
}
defn.add(wordToDefn[otherWord]!!)
}
defn.shuffle()
答案 0 :(得分:1)
您正在尝试从0生成一个小于0的随机数。给它一个正数,这样它就可以给您带来有意义的结果。检查words.size,它应该大于0
答案 1 :(得分:0)
我猜您的words.size为0,因为单词为空。然后,您尝试使用此值-> 0进行随机化。您无法执行此操作,则必须随机化1或更高。这就是为什么您会收到此错误。
只需检查单词是否为空,然后尝试随机。