Написал калькулятор через классы не могу вывести результат
ScriptFile1.kt
fun main() {
var get_class = ChekerErrorClass()
print("Ведите число: ")
var num1 = readLine()
print("Ведите число: ")
var num2 = readLine()
print("введите символ: + - / *: ")
var num3 = readLine()
var test = get_class.check_num("$num1", "$num2", "$num3")
println(test)
}
ClassFile1.kt
open class MainClass(){
init {
println("welcome to project")
}
fun operator_plus(a:Int, b:Int):Int {
return a + b
}
fun operator_minus(a: Int,b: Int):Int {
return a - b
}
fun operator_umnojenie(a: Int,b: Int):Int {
return a * b
}
fun operator_delenie(a: Int,b: Int):Int {
return a / b
}
}
class ChekerErrorClass(): MainClass(){
fun check_num(a: String,b: String, c: String){
try {
var _aa = a.toInt()
var _bb = b.toInt()
next_chek(_aa, _bb,"$c")
} catch (e: Exception){
println("Ошибка ввода данных")
}
}
fun next_chek(num11:Int, num22:Int, num33:String){
if(num33=="+"){
operator_plus(num11,num22)
}
if(num33=="-"){
operator_minus(num11,num22)
}
if(num33=="/"){
operator_umnojenie(num11,num22)
}
if(num33=="*"){
operator_delenie(num11,num22)
}
}
}
println(test) выводит в консоль kotlin.Unit я проверил все арифметические процессы проходят как нужно.А мне нужно что-бы println(test) выводил результат арифметической операции И хотел бы узнать правильно ли я пишу код планирую изучать kotlin дальше. С уважением.
Ответы (1 шт):
Проблема заключается в том, что ваша функция next_chek возвращает Unit (аналог void в других языках программирования). Вместо этого вам нужно вернуть результат операции. Измените возвращаемый тип вашей функции next_chek на Int и верните результат соответствующей операции. Вот исправленный код:
class ChekerErrorClass : MainClass() {
fun check_num(a: String, b: String, c: String) {
try {
var _aa = a.toInt()
var _bb = b.toInt()
var result = next_chek(_aa, _bb, "$c")
println(result)
} catch (e: Exception) {
println("Ошибка ввода данных")
}
}
fun next_chek(num11: Int, num22: Int, num33: String): Int {
if (num33 == "+") {
return operator_plus(num11, num22)
}
if (num33 == "-") {
return operator_minus(num11, num22)
}
if (num33 == "/") {
return operator_umnojenie(num11, num22)
}
if (num33 == "*") {
return operator_delenie(num11, num22)
}
return 0 // или другое значение по умолчанию
}
}
Теперь функция next_chek возвращает результат операции, и его можно использовать при вызове из функции check_num.