Menu
CoddyTech

接收入库

本课属于 Coddy Kotlin 学习旅程的“逻辑与流程”单元。第 56 课,共 63 课。

构建一个库存程序,用于接收和销售库存、检查数量并生成报告。每个阶段都会扩展同一个命令处理器。解析命令字段,在更改映射前验证数量,并为每条命令返回一个响应。无效输入不得更改库存。

val fields = "ADD|pen|3".split("|")
challenge icon

挑战

困难

补全 runInventory,参数为 commands: List<String>。每次调用函数时,都创建一个初始为空的库存。每条命令都是一个字符串,字段之间用 | 分隔。物品名称由小写 ASCII 字母组成,最多有 100 条命令。按字面分隔符拆分每条命令;每条命令的字段数量始终符合其操作的要求。每条命令返回一条回复。解析前先去除数量两端的空白;有效数量在 0 到 1000 之间。无效数字文本、超出 Int 范围的文本、负数或大于 1000 的数量都会产生 invalid,且不改变状态。支持 ADD|item|quantity:将有效数量加到该物品的库存中,初始库存为零,并回复 added。即使添加的数量为零,也会创建该物品。本步骤的输入只使用此处支持的操作。

除非上文规定了更严格的范围,否则每一层的集合最多包含 100 个元素,整数参数和整数集合值都在 -1000 到 1000 之间。用于解析的文本可能包含无效或超出范围的表示形式,如上所述。

返回 List<String> 类型的值。保留提供的输入/输出代码。它每行读取一个标量参数;列表以元素数量开头,后跟各个元素;映射以条目数量开头,后跟每个键和值。嵌套列表的每一行都重复使用数量加元素的格式。提供的 main 会打印返回值,后跟一个换行符。列表使用 Kotlin 的标准方括号格式;不要打印额外的标签。

亲手试试

fun runInventory(commands: List<String>): List<String> {
    // 在这里写下你的答案。
    return emptyList()
}
fun main() {
    val commandsCount = readln().toInt()
    val commands = mutableListOf<String>()
    for (i0 in 0 until commandsCount) {
        val commandsItem = readLine().orEmpty()
        commands.add(commandsItem)
    }
    println(runInventory(commands))
}

逻辑与流程中的所有课

自己练习: Kotlin 在线编辑器