条件表达式有问题吗?



>编写一个程序来读取一个单词并打印该单词中不存在的所有字母。 仅计算小写字母。

我以为它会从 a. 中删除你好。z,相反,它打印的是真的

val input = Scanner(System.`in`)
val inp = input.nextLine() //hello
val alp = mutableListOf('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')
for (i in inp) {
if (i in alp) {
val a = alp.remove(i)
print(a)
}
}

MutableList.remove()返回一个布尔值,指示是否有任何要删除的实例。而且您每次都在打印值。由于您正在迭代输入单词,因此您只能从循环中打印单词中的字母。要修复您的代码,您需要像这样修改它:

for (i in inp) {
alp.remove(i)
}
println(alp.joinToString(""))

但是在字母字符范围内使用filterNot函数会更容易。

val alp = ('a'..'z').filterNot { it in inp }
println(alp.joinToString(""))
val notInWord = CharRange('a','z').run { 
minus(input.asSequence())
}.also { 
it.forEach { ch ->print(ch) }
}

以下是一些注意事项:

  1. 为所有小写字母创建CharRanage(相当于('a'..'z')(
  2. 将用户输入的Minus用作Sequence<Char>以打开列表 包含原始集合的所有元素,但元素除外 包含在给定的序列中。
  3. 遍历List并使用also作为最终块打印元素

最新更新