如何让这不重复同样的事情

时间:2018-01-20 17:04:22

标签: kotlin

我需要这个为每个航班打印一些“#”但它重复它并且我无法解决它。 这是当前的输出:

  

TP23 ##############################

     

TP23 #########

     

TP1971 ############

     

VN453 #####

     

TP23 ##############################

     

TP23 #########

     

TP1971 ############

     

TP23 ##############################

     

TP23 #########

     

VN453 #####

     

TP1971 ############

这是预期的输出:

  

TP23 ##############################

     

TP23 #########

     

TP1971 ############

     

VN453 #####

fun mapReservas(reservas: List<Reservas>): Map<Pair<String, Int>, List<Reservas>> {
    val map = mutableMapOf<Pair<String, Int>, MutableList<Reservas>>()
    for (reserva in reservas) {
        val key = reserva.numVoo to reserva.day
        val list = map[key] ?: mutableListOf()
        list.add(reserva)
        map[key] = list
    }
    return map
}


fun analiseEconomica(reserves: List<Reserves>) {
    val map = mapReserves(reserves)
    for (reserve in reserves) {
        map.forEach {
            val reservesNum = it.key.first
            val reservesDay = it.key.second
            val reservesCount = it.value.count()
            if (reservesNum == reserva.numFLight) {
                val conversion : Double = reservasCount * 1.5
                conversion!!.toInt()
                var count = 0
                val space = 10 - reservesNum.length
                print("$reservesNum")
                for (i in 0..space) {
                    print(" ")
                }
                while (count < conversion) {
                    print("#")
                    count++
                }
                println()
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您正在循环reserves 您创建的地图。删除for循环,它应该只打印地图的内容。

fun analiseEconomica(reserves: List<Reserves>) {
    val map = mapReserves(reserves)
    map.forEach {
       // Same logic here
    }
}

通过使用额外的for循环,您表示要为列表中的每个map对象打印Reserves一次的每个值,这就是您获得的原因这么多重复。

仅供参考,有更多惯用的方式来做你正在做的事情,但为了直接回答你的问题,我将把它留在这里。