Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个kotlin代码没有返回最大索引(它总是返回0索引)_Kotlin - Fatal编程技术网

为什么这个kotlin代码没有返回最大索引(它总是返回0索引)

为什么这个kotlin代码没有返回最大索引(它总是返回0索引),kotlin,Kotlin,为什么此kotlin代码没有返回最大索引(它总是返回0索引) fun getMaxModel():Model{ val city=模型列表 var modelIndex:Int=0 变量pop:Float=0F 用于(0.城市中的i.尺寸-1){ if(pop

为什么此kotlin代码没有返回最大索引(它总是返回0索引)

fun getMaxModel():Model{
val city=模型列表
var modelIndex:Int=0
变量pop:Float=0F
用于(0.城市中的i.尺寸-1){
if(pop
始终返回0索引 我需要返回最大索引

您可以使用此

val max = nums.indexOf(nums.max())

在您的函数中尝试以下操作:

val max = modelList.maxOrNull()
如果需要最大值的索引,请尝试以下操作:

val maxIndex = modelList.indexOf(max)
我还建议你看看这个 关于如何使用kotlin中的集合进行操作,有很多有用的信息。 kotlin团队还提供了一系列很酷的练习,当您尝试学习如何使用收藏时,这些练习会有很大帮助:

只需使用高阶函数,无需循环所有数据,如下所示:

fun getIndexMinPopModel(): Int {
     return modelList.minByOrNull { it.population }?.let { modelList.indexOf(it) }
}

我在这段代码中没有看到bug。你能提供一个完整的例子和数据,这样我们可以复制它吗?而且,您实际上重新发明了函数。你的整个函数可以被简单的替换:
maxBy{it.population}
。好吧,
maxBy()
被重命名为
maxByOrNull()
。只是好奇,为什么要转换成
Float
来进行比较?正如@broot所说的,你真的不需要自己实现它,除非它具有教育意义
maxByOrNull
和许多其他集合扩展在Kotlin中可用。您得到此结果的原因可能是城市列表为空?确保你检查了你的数据。另外,您不返回索引,而是在这里返回
模型
,因此我不确定您所说的是
模型索引
的值还是其他值
fun getIndexMinPopModel(): Int {
     return modelList.minByOrNull { it.population }?.let { modelList.indexOf(it) }
}