Написал калькулятор через классы не могу вывести результат

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 шт):

Автор решения: Battrip

Проблема заключается в том, что ваша функция 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.

→ Ссылка