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 为什么此代码不是';t将所有大写字母替换为小写字母,将所有小写字母替换为大写字母?_Kotlin - Fatal编程技术网

Kotlin 为什么此代码不是';t将所有大写字母替换为小写字母,将所有小写字母替换为大写字母?

Kotlin 为什么此代码不是';t将所有大写字母替换为小写字母,将所有小写字母替换为大写字母?,kotlin,Kotlin,我原以为这段代码会将所有的大写字母改为小写字母,并将小写字母改为大写字母,但它不起作用。。为什么? fun main(args: Array<String>) { val userInput = readLine()!! val output = userInput for(a in output){ when{ a.isUpperCase() -> a.toLowerCase() a.

我原以为这段代码会将所有的大写字母改为小写字母,并将小写字母改为大写字母,但它不起作用。。为什么?

fun main(args: Array<String>) {
    val userInput = readLine()!!
    val output = userInput 

    for(a in output){
        when{
            a.isUpperCase() -> a.toLowerCase()
            a.isLowerCase() -> a.toUpperCase()
            else -> a
        }
    }

    println(output)
}
fun main(args:Array){
val userInput=readLine()!!
val输出=用户输入
用于(输出中的a){
什么时候{
a、 isUpperCase()->a.toLowerCase()
a、 isLowerCase()->a.toUpperCase()
其他->a
}
}
println(输出)
}
在代码中,您创建了一个大写/小写字符,但没有将其分配给新的输出字符串。处理字符串的方法不会更改现有的字符串,而是使用更改后的值创建它的副本

Kotlin具有
for(i in 0直到input.length)
以避免手动“-1”。因为您不需要索引,所以我喜欢Kotlin的
String.forEach
,它直接为您提供字符:
input.forEach{…add to builder…}
;字符可通过
it
获得。对我来说,使用map更为惯用:
input.map{…swap case…}.joinToString(“”)
fun changeCase(input : String) : String {
    val builder = StringBuilder()
    for (i in 0..input.length-1){
        val char : Char = input[i]
        if (char.isUpperCase) builder.append(char.toLowerCase)
        else if (char.isLowerCase) builder.append(char.toUpperCase)
        else builder.append(char)
    }
    return builder.toString()
}