当我运行这段代码时,我有一个问题。我想构建一个简单的计算器,所以我需要使用readLine(),但我在减法,乘法和除法操作中遇到错误。这是密码,请帮帮我。
fun main()
{
print("1. Additionn2. Subtractionn3. Multiplicationn4. DivisionnChoose Number: ")
var choosen = readLine()
print("Enter The First Number: ")
var num1 = readLine()
print("Enter The Second Number: ")
var num2 = readLine()
if (choosen?.toInt() == 1){
print("The Result Is: ${num1 + num2}")
} else if (choosen?.toInt() == 2){
print("The Result Is: ${num1 - num2}")
} else if (choosen?.toInt() == 3){
print("The Result Is: ${num1 * num2}")
} else if (choosen?.toInt() == 4){
print("The Result Is: ${num1 / num2}")
} else {
print("Wrong Input")
}
}
不能编译-、*和/的原因是num1和num2是字符串。+将工作,但它不会添加num1和num2,它将连接两个值。
我建议使用readln()而不是readLine(),因为您可以保证获得字符串。readLine()返回可选的字符串?。 使用toIntOrNull()可以立即将输入转换为Int。因此,如果输入的内容不能转换为Int,则num1和/或num2将使用null。下一步是测试输入是否有效,因此使用if子句。
只有当输入有效时,才有意义对两个操作数应用操作符。when语句比多个ifelse if语句更优雅。
print("1. Additionn2. Subtractionn3. Multiplicationn4. DivisionnChoose Number: ")
val chosen = readln()
print("Enter The First Number: ")
val num1 = readln().toIntOrNull()
print("Enter The Second Number: ")
val num2 = readln().toIntOrNull()
if (chosen !in listOf("1", "2", "3", "4") || num1 == null || num2 == null) {
print("Invalid input")
} else {
val result = when (chosen) {
"1" -> num1 + num2
"2" -> num1 - num2
"3" -> num1 * num2
"4" -> num1 / num2
else -> null // will never happen, see 'if' clause
}
print("The result is: $result")
}