Как изменить строку на математическое выражение
У меня есть переменная exp где хранится значение типа string, как я могу изменить на математическое выражение?
fun main() {
while (true){
println("Enter the first operand")
val x = readLine()
println("Enter operation")
val operator = readLine()!![0]
println("Enter the second operand")
val y = readLine()
println("Enter the second operation")
val operator1 = readLine()!![0]
println("Enter the Third operand")
val z = readLine()
println("Enter the third operation")
val operator2 = readLine()!![0]
println("Enter the Fourth operand")
val q = readLine()
println("Now to see the result enter =")
val res = readLine()
val exp = x+operator+y+operator1+z+operator2+q
if (res == "=") {
println(exp)
} else {
println("Something goes wrong")
}
}
}
Ответы (2 шт):
Автор решения: Sergei Kirjanov
→ Ссылка
В вашем случае не надо склеивать всё в строку.
Можно сделать множество условий if или when, в которых проверить, равен ли оператор определенной строке, и если да, выполнить вычисления:
while (true){
println("Enter the first operand")
val x = readLine()!!.toInt()
println("Enter operation")
val operator = readLine()
println("Enter the second operand")
val y = readLine()!!.toInt()
val res1 = when(operator){
"+" -> x+y
"-" -> x-y
"*" -> x*y
"/" -> x/y
else -> throw Exception()
}
println(res1)
}
Автор решения: Խաչատուր Մելքոնյան
→ Ссылка
Каким-то образом я получил то, что хотел. Этот символ !! Я понял, что это не очень хорошее решение, и мне придется снова усложнять код для более сложных математических выражений.
fun main() {
while (true){
var res1 = 0
println("Enter the first operand")
val x = readLine()
println("Enter operation")
val operator = readLine()
println("Enter the second operand")
val y = readLine()
if(operator == "+") {
res1 = x!!.toInt()+ y!!.toInt()
}
else if(operator == "-"){
res1 = x!!.toInt()-y!!.toInt()
}
else if(operator == "/"){
res1 = x!!.toInt()/y!!.toInt()
}
else if(operator == "*"){
res1 = x!!.toInt()*y!!.toInt()
}
else{
println("Something goes wrong")
}
println(res1)
}
}