我无法打印数组元素(kotlin.Unit)

时间:2019-06-03 21:59:18

标签: android arrays intellij-idea kotlin

我添加了所有代码。我想编写数组的所有元素,但是我只能在屏幕上看到“ kotlin.Unit”。例如,如果我在“ bilgiler”中添加三个“ ozet”,则会看到三个“ kotlin.Unit”。这与数组类型有关吗? (我在发送时删除了“菜单”功能) enter image description here

    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 :(得分:0)

我怀疑,函数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"
}