Я не могу напечатать элементы массива (kotlin.Unit) - PullRequest
0 голосов
/ 04 июня 2019

Я добавил все коды. Я хочу написать все элементы массива, но вижу только «kotlin.Unit» на экране. Например, если я добавлю три «ozet» в «bilgiler», я вижу три «kotlin.Unit». Это связано с типом массивов? (Я удалил функцию «Меню» при отправке) введите описание изображения здесь

    package OOP

class Ogrenci constructor(var isim:String,var numara:Int)
{
fun bilgileriGoster ()
{

    println("Öğrencinin Adı: $isim"+" "+ "($numara)")

    print("İlk sınav notunu girin: ")
    var not1 = readLine()!!.toInt()

    print("İkinci sınav notunu girin: ")
    var not2 = readLine()!!.toInt()

    var ortalama:Float = (not1+not2).toFloat()/2
    println("$isim adlı öğrencinin ortalaması:"+ortalama )
}
    fun ozet()
    {
        var ozet = "$isim,$numara"
    }
}
    fun main()
{
    var bilgiler = arrayListOf<Any>(0)

 var Seçim = Menu()
while (true){
    if (Seçim==1) {
        println("Öğrenci Adını Giriniz:")
        var ad: String = readLine().toString()
        println("Öğrenci Numarasını Giriniz:")
        var numara: Int = readLine()!!.toInt()

        var ogr1: Ogrenci = Ogrenci(ad, numara)
        ogr1.bilgileriGoster()
        println()

        var ozet = ogr1.ozet()
        bilgiler.add(bilgiler.size,ozet)

        println("1-Devam")
        println("2-Çıkış")
        print("Seçim:")
        var karar = readLine()!!.toInt()

        if (karar==2)
        {
            for (index in bilgiler)
        {
            print(index)
        }
            break
        }

    }
    }

}

1 Ответ

0 голосов
/ 05 июня 2019

Как я и подозревал, функция ozet() возвращает Unit, поскольку она объявлена ​​как:

fun ozet() {
    var ozet = "$isim,$numara"
}

Если тип возвращаемого значения пропущен, kotlin знает, что это Unit, поэтому он такой же, как:

fun ozet(): Unit {
    var ozet = "$isim,$numara"
}

По этой причине, каждый раз, когда вы выполняете его и помещаете результат в массив, вы получаете объект Unit, и именно поэтому вы видите Unit.

Трудно сказать, что именно должно быть в массиве, но я думаю, легко понять, что это должно быть что-то, возвращенное из ozet.

Если вы хотите поместить содержимое переменной, вы можете просто изменить ее на:

fun ozet() = "$isim,$numara"

Это сокращение для:

fun ozet(): String {
    return "$isim,$numara"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...