我添加了所有代码。我想编写数组的所有元素,但是我只能在屏幕上看到“ 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
}
}
}
}
答案 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"
}