我想打印所有的枪,我已经使用'gunIndex'变量索引。我可以使用循环,但为什么我不能这样做没有一个循环?当使用循环,为什么我可以打印IntRange,尽管它不是Int类型?gun[gunIndex]
这是错误:
类型不匹配:推断类型为IntRange,但应为Int
fun main(args: Array<String>) {
var gun = arrayListOf<String>("ak47", "m249 SAW", "Dessert Eagle")
gun.add("AKM")
gun.add("AK74")
var nomerGun = 0
var gunIndex = 0..gun.size-1
println(gun[gunIndex])
}
为什么当使用for循环时,我没有得到这个错误?
类型不匹配:推断类型为IntRange,但应为Int
当我打印出来的时候?
我已经花了几个小时询问ChatGPT,但我仍然不明白为什么没有循环就做不到,以及为什么尽管[gunIndex]
操作符填充了IntRange,但for循环可以打印gun[gunIndex]
。
2条答案
按热度按时间ajsxfq5m1#
这声明
gunIndex
为IntRange
类型(即,整数列表):对数组进行索引需要
Int
来指示要在哪个特定索引处检索值。尝试使用值范围对数组进行索引没有逻辑意义,因此出现错误。当使用for循环时,为什么我可以打印IntRange,尽管它不是Int类型?
您没有显示代码,因此我不得不假设您误解了。您可能有如下内容:
这使得
gunIndex
对于循环的每次迭代都是Int
,可用于索引数组。olmpazwi2#
如果你想对一个集合的所有元素做一些事情,你必须做一些循环,可以是经典的for/foreach循环,迭代器和while循环,等等。
你的for循环是什么样子的?
如果要在简单的oneliner中打印所有项目,请使用用途: