编辑:答案如下
对于kotlin来说真的很新鲜,想要检查用户是否使用if-else语句输入了Integer。稍后需要添加一个do while循环。
预期错误消息:不正确
当我将鼠标悬停在(input!=pin(上时,它会显示条件'输入!=pin总是正确的。
这是我的代码
fun main() {
println("Create PIN: ")
val pin = readln().toInt()
println("Enter PIN: ")
val input = readln().toInt()
if (input == pin){
println ("Correct")
}
else if (input != pin) {
println("Incorrect")
}
}
因为如果input == pin
是false,那么input != pin
总是true,这就是为什么你不需要第二个,如果你可以用if:替换它的话
fun main() {
println("Create PIN: ")
val pin = readln().toInt()
println("Enter PIN: ")
val input = readln().toInt()
if (input == pin){
println ("Correct")
}
else {
println("Incorrect")
}
}
但现在,如果用户输入了无法转换为int的内容(一些字符,例如"hello"…(。toInt((将抛出一个NumberFormatException
,而您的代码将不起作用,因此为了解决这个问题并处理用户输入Int
以外的内容时的情况,您可以使用.toIntOrNull()
而不是.toInt()
。
.toIntOrNull()
:将字符串解析为Int数字,如果字符串不是数字的有效表示形式,则返回结果或null。
因此,如果pin或input为null,则意味着用户输入了无法转换为Int.的内容
fun main() {
println("Create PIN: ")
val pin = readln().toIntOrNull()
println("Enter PIN: ")
val input = readln().toIntOrNull()
if (input == null || pin == null) {
println("PIN is not valid")
}
else if (input == pin){
println ("Correct")
}
else {
println("Incorrect")
}
}