Kotlin Dersleri – Kullanıcıdan Bilgi Almak (readLine metodu)

Herkese Selamlar,
mobilhanem.com üzerinden yayınladığımız Kotlin derslerimize Kullanıcıdan Bilgi Almak(readLine metodu) konusuyla devam ediyoruz. Daha önce yayınladığımız İlk Kotlin Programı dersimize bu link‘ten ulaşabilirsiniz, İlk Kotlin Programı dersimide IntelliJ üzerinden ilk Kotlin projemizi ve ilk Kotlin programımızı yaratmıştık. Bu dersimizde yine aynı proje/program üzerinden devam ederek kullanıcıdan nasıl bilgi alabileceğinizi anlatacağız, eğer okumadığınız bir ders varsa her zaman önceki derslerimizi okumanızı tavsiye ederiz.

Mobilhanem kayıt uygulaması

Öncelikle aşağıdaki kodu yazıp, bir çalıştıralım. Örneklerde verdiğimiz kodları buradan IntelliJ’e direkt kopyalamak yerine, tekrar yazmanızı şiddetle tavsiye ediyoruz, böylece hem Kotlin ile program yazma pratiğiniz gelişecektir, hem de örnekleri anlamanız kolaylaşacaktır.

fun main(args:Array<String>){

    println("Mobilhanem kayit ekranina hosgeldiniz")

    var isim = "Baris";
    var yas = 28;

    println("Mobilhanem kaydiniz bu bilgiler ile yapilacaktir")
    println("Adiniz: " + isim + " - " + isim::class)
    println("Yasiniz:" + yas + " - " + yas::class)

}

Bu kodu yazıp çalıştırdığınız zaman bu şekilde bir çıktı görmelisiniz.

Mobilhanem kayit ekranina hosgeldiniz
Mobilhanem kaydiniz bu bilgiler ile yapilacaktir
Adiniz: Baris - class kotlin.String
Yasiniz:28 - class kotlin.Int

Önceki derslerimizden öğrendiğimiz gibi burada isim ve yas değişkenlerini kullandık. Yine önceki derslerimizde bahsettiğimiz Kotlin dilindeki tür çıkarımı(type inference) özelliğini bu örneğimizde gözlemleyebiliyoruz. isim değişkeninin türünün String olacağını belirtmediğimiz halde Kotlin dili tür çıkarımı özelliğiyle herhangi bir hata vermeden değişken oluşturmamıza izin verdi. isim değişkeni için String veri türünü ve yas değişkeni için Int veri türünü çıkarımladı.

Kullanıcıdan Klavye Yardımıyla(readLine metodu ile) Bilgi Almak

Önceki örneğimizde ad ve yas değişkenlerini programcı olarak biz belirliyoruz, fakat gerçek hayatta çalışacak bir uygulamada kullanıcılardan bazı bilgileri istememiz gerekebilir. Normalde böyle bir uygulamada isim ve yas bilgilerinin kullanıcı tarafından belirlenmesi icab edecektir. Bu tarz durumlarda kullanıcıdan komut satırı ve klavye vasıtasıyla bilgi alabilmek için Kotlin’in readLine() komutunu kullanabiliriz. Şimdi programımızı şu şekilde güncelleyelim:

fun main(args:Array<String>){

    println("Mobilhanem kayit ekranina hosgeldiniz")

    print("Adinizi girin ")
    var isim = readLine()!!

    print("Yasinizi girin ")
    var yas = readLine()!!

    println("Mobilhanem kaydiniz bu bilgiler ile yapilacaktir")
    println("Adiniz: " +  isim + " - " + isim::class)
    println("Yasiniz:" + yas + " - " + yas::class)

}

Bu örneğimizde dikkatinizi çekebilecek bir husus readLine() metodundan sonra kullandığımız iki adet ünlem işareti. Sonraki yazılarımızda detayıyla değineceğimiz bu ikili ünlem işareti önceki yazımızda belirttiğimiz Kotlin’in NullPointerException’ı engellemek amacıyla eklediği null kontrolü özelliğiyle ilgilidir. isim ve yas değişkenlerini sonraki satırlarda kullandığımız için !! işaretlerini koymadığımız taktirde derleme sırasında(compile time) hata alırız, !! işareti ile biz kotline değer null olsa bile değeri kullanmak istediğimizi söylüyoruz. Bundan sonra null kontrolü artık kullanıcıdadır. Şimdilik bu kadarını bilmemiz yeterli, sonraki yazılarımızda null kontrolüne detaylı bir şekilde değineceğiz.

Örneğimizi çalıştırıp isim olarak Baris ve yas olarak 28 girelim, şöyle bir çıktı göreceğiz:

Mobilhanem kayit ekranina hosgeldiniz
Adinizi girin Baris
Yasinizi girin 28
Mobilhanem kaydiniz bu bilgiler ile yapilacaktir
Adiniz: Baris - class kotlin.String
Yasiniz:28 - class kotlin.String

Bu çıktıda dikkatimizi çekmesi gereken ilginç bir husus var, yas degiskeninin tipi Kotlin tarafından String olarak çıkarımlandı. Önceki yazımızda bahsetmiştik Kotlin değişmez türlü(statically typed) bir dil, yani derleme zamanında(compile time) tüm ifadelerin(expression) türü belirli olmak zorunda, dolayısıyla readLine metodunun döneceği değerin türünün belli olması şart. İşte bu şart sebebiyle Kotlin geliştiricileri readLine metodunun varsayılan(default) değerini diğer tüm değişken türlerini kapsayabileceğinden String olarak belirlemişler. Biz burada klavyeden 28(yani Integer olabilecek bir değer) girdiğimiz halde String veri türünde bir değişken elde ettik. Kullanıcıdan yaş bilgisini Integer olarak alabilmek için readLine metoduna toInt şekilde bir ekleme yapmalıyız

    var yas = readLine()!!.toInt()

Programımızı bu şekilde değiştirip aynı girdilerle tekrar çalıştırısak bu sefer böyle bir çıktı görmeliyiz

Mobilhanem kayit ekranina hosgeldiniz
Adinizi girin Barıs
Yasinizi girin 28
Mobilhanem kaydiniz bu bilgiler ile yapilacaktir
Adiniz: Barıs - class kotlin.String
Yasiniz:28 - class kotlin.Int

Görebileceğimiz gibi bu sefer yas değişkeninin türü Int olarak çıkarımlandı. Aynı toInt metodu olduğu gibi toDouble, toFloat, toBoolean vs. metodlar da tabii ki diğer veri türleri için kullanılabilir.

Bu dersimizde readLine metodu ilekullanarak kullanıcıdan bilgi almayı anlattık. Sonraki derslerimizde görüşmek üzere, selamlar.

Konu hakkında sorularınızı bu sayfanın yorumlar kısmından veya mobilhanem soru cevap sitemizden sorabilirsiniz.

Tüm Kotlin Dersleri için tıklayınız.

35

Enes Ergül

TOBB Ekonomi ve Teknoloji Üniversitesi Bilgisayar Mühendisliği bölümü mezunudur. 2010 yılında TAI'de çalışma hayatına başlamıştır. Sonrasında 2014 yılında T2 Yazılım ve 2016 yılından itibaren halen Udemy'de çalışmaya devam etmektedir.

4 Yorum

  • Merhaba,

    Öncelikle emeğinize sağlık bu alanlarda böyle güzel içerikler üreten kaynaklar çok çok az siz ise çok güzel bir iş yapmışsınız.

    Ben kendim kodlarken: println(” İsminiz: ” + isim + ” Yaşınız: ” + yas) bu şekilde uyguluyorum.
    Siz örneklerinizde println(“Adiniz: ” + isim + ” – ” + isim::class)
    println(“Yasiniz:” + yas + ” – ” + yas::class) bir “-” (tire) koyup, sonunada ::class ekliyorsunuz. Bizim de bu şekilde kodlamamız çok bir şey farkeder mi? Yoksa siz eğitim için veri tiplerini daha iyi farkedilmesinin sağlanması adına mı böyle yapıyorsunuz?

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?