Kotlin N必须是正面崩溃

时间:2019-05-04 20:49:26

标签: java android kotlin

我在堆栈跟踪显示以下错误: 引起原因: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()

2 个答案:

答案 0 :(得分:1)

您正在尝试从0生成一个小于0的随机数。给它一个正数,这样它就可以给您带来有意义的结果。检查words.size,它应该大于0

答案 1 :(得分:0)

我猜您的words.size为0,因为单词为空。然后,您尝试使用此值-> 0进行随机化。您无法执行此操作,则必须随机化1或更高。这就是为什么您会收到此错误。

只需检查单词是否为空,然后尝试随机。