在Kotlin中如何获取用户输入来创建列表?
问题原因
readLine()函数的返回值为String?可空字符串类型,并不是列表类型,直接使用下标[1]访问仅会尝试读取字符串的第2个字符,无法获取列表元素- 未处理空安全场景:当用户未输入任何内容直接回车,或者读取输入出现异常时,
readLine()会返回null,直接访问会触发空指针异常
解决步骤
- 先对读取到的输入做非空校验,避免空指针
- 根据你预设的输入分隔规则(比如空格、逗号分隔多个姓名),将字符串拆分为列表
- 访问列表元素前建议先判断列表长度,避免下标越界
可运行示例代码
假设要求用户输入时用空格分隔多个姓名,示例代码如下:
fun main(args: Array<String>) { print("请输入多个姓名,用空格分隔:") val input = readLine() // 非空判断+拆分字符串为列表,自动过滤连续空格 val listOfNames = input?.trim()?.split("\\s+".toRegex()) ?: emptyList() // 先判断列表长度再访问元素,避免越界 if (listOfNames.size >= 2) { print(listOfNames[1]) } else { print("输入的姓名数量不足,无法获取第二个姓名") } }
如果需要用逗号分隔多个姓名,把split的参数改成",",再自行处理每个姓名前后的空格即可。
内容的提问来源于stack exchange,提问作者rubypoe
相关产品推荐
相关产品推荐

