Sıfırdan Java programlama dersleri serisine  “ Java Programlama Dersleri, Kullanıcıdan Input Alma” konusu ile devam ediyoruz.

Uygulamalarımızı kullanıcıların kullanımı için yazdığımız için, kullanıcıdan input alma bir programın vazgeçilmezidir.

Bizim klavyeden aldığımız her değer aslında karakterdir yani char tipindedir.

Kullanıcının klavyeden girdiği değere göre işlem yapmasını sağlayan bir uygulama yapacağız. Bu uygulamada özellikle do while döngüsünün hangi durumlarda kullanılabileceğini göstermiş olacağız.

do while döngüsünü hatırlamayanlar “Java Programlama Dersleri, döngüler” konusuna tekrardan göz atabilirler.

Uygulamamıza geçmeden önce do while döngüsünün şart ne olursa olsun en az bir kez çalıştığını hatırlatmak isteriz.

Kullanıcıdan bilgi almanın iki yolu vardır :

  • System.in.read() metodu Kullanma
  • Scanner classı kullanma

Bankamatik Uygulaması

 

Java dili ile yapacağımız Bankamatik Uygulamasında, kullanıcıdan input alma işlemi için System.in.read() metodunu kullanacağız. Bu sebeple bu metod hakkında kısa bir bilgi verelim.

Java’da System.in sınıfı, standart girişten veri akışını sağlar. System.in.read() metodu ise kişi klavyeden herhangi bir karaktere bastığında o karakterin ascii karşılığını döndürür. System.in.read() metodu nun alabileceği değerler 0 ile 255 arasındaki ascii kodlarıdır.

System.in.read() metodunu kullanabilmek için onun dahil olduğu package ‘ı kodumuza dahil (import) etmemiz gerekir.

Kodumuzu yazdığımızda compiler yani derleyici aşağıdaki gibi package’ı dahil etmemizi isteyen bir hata verir. Eclipse IDE kullananlar bu kod üzerine mouse ile geldiklerinde çıkan hatayı “Add throws declaration” butonuna basarak çözebilirler.

eclipse ide package import etme kutuphane dahil etme

NetBeans IDE kullananlar ise aşağıdaki gibi hata alacaklardır. Bu durumda sol tarafta bulunan lambaya tıklayarak çıkan “Add throws clause for …” şeklindeki linke tıklayarak ilgili paketi programa dahil ederler.

netbeans ide package import etme kutuphane dahil etme

İlk olarak kodumuzu verelim, sonrasında çalışma mantığını anlatırız :

İlk olarak char tipinde secim adında bir değişken tanımladık. Sonrasında do while döngüsü içerisinde bankamatik menülerini hatırlatacak bir yapıyı System.out.println() metodları ile yazdırdık.

System.in.read() metodu koduna gelindiğinde klavyeden bir karakter girmemiz beklenecektir.

Bu metod bir karakter girdiğimizde girilen karakteri “karakterin ascii karşılığı” olarak alır. (char) ifadesi ile bu ascii kod, karaktere çevrilerek secim değişkenine atanmıştır. (casting işlemi)

kodu ile yapılan Casting işlemi (tip dönüşümleri) hakkında fikir sahibi değilseniz “Java Programlama Dersleri, Tip Dönüşümleri” dersini okuyabilirsiniz.

secim değişkenine atanan karakter daha sonrasında while döngüsünün şart kısmına gelecektir. Girilen karakterler ‘1’ veya ‘5’ karakterleri arasındaki karakterlerden değilse bu karakterler girilene kadar döngüden çıkılmayacaktır.

1,2,3,4 veya 5 den herhangi birine basıldığında döngüden çıkılacaktır. switch karar kontrol yapısına gelen secim karakteri değeri 1 ise case 1 kısmına 2 ise case 2 kısmına … 5 ise case 5 kısmına girecek ve buradaki kodlar işlenecektir.

Programımızın sonucu aşağıdaki gibidir :

eclipse ide bankamatik uygulamasi sonucu

System.in.read() metodu her defasında bir karakter okur. Yani kullanıcı klavyeden 123 değerini girdiğinde bunun ilk karakteri olan 1 karakterini okur ve bunun unicode değeri 49’u geri döndürür.
 

Harf Notu Hesaplama

 

Kullanıcıdan input almanın bir diğer yolu Scanner isimli bir sınıfı kullanmaktır. Bir sınıfın metodlarına erişebilmek için o sınıf türünden bir obje(değişken) tanımlanır.

kodunu yazdığımızda aşağıdaki gibi bir hata ile karşılaşıyoruz. (NetBeans IDE). Hata bize bu sınıfın dahil olduğu package ı kodumuza dahil etmemizi söylüyor. “Add import for java.util.Scanner” a tıklayarak dahil ediyoruz.

netbeans ide scanner paketini ekleme
Bu Scanner sınıfı farklı bir package içerisinde yer aldığı için derleyicimiz yine ilgili package ı eklememiz için bize hata verdi. Bir önceki örnekte gösterdiğimiz gibi belirtilen package ‘ı ekledik.

Kodumuzu veriyorum. Sonrasında açıklamasını yaparız (NetBeansIDE kullanıldı):

İlk olarak scan adında Scanner sınıfı tipinde kullanıcıdan input alan bir değişken tanımladık. Sonrasında ekrana “Harf notunu öğrenmek istediğiniz puanı giriniz: (70-100) :  ” yazısını yazdırdık.

int tipindeki puan değişkeni scan değişkeninin (objesinin) nextInt() metodu ile klavyeden girilen int değeri alacaktır.

Bu kodun şöyle bir dezavantajı var, olur da kullanıcı int değer değil de karakter girerse program hata verecektir.

Sonrasında int tipindeki puan değişkeni kendi değerine uygun if else yapısı içerisine girecek ve harf notu yazdırılacaktır.

if else yapıları hakkında fikir sahibi değilseniz “Java Programlama Dersleri, Karar Kontrol Yapıları” dersine bakabilirsiniz.

Programımızın sonucu aşağıdaki gibidir :

netbeans ide kullanicidan input alma harf notu hesaplama sonucu

 

Kullanıcıdan Farklı Tipte Veriler Alma (Scanner Sınıfı)

 

Scanner sınıfını kullanmaya başlamadan önce Scanner sınıfının dahil olduğu package’ı kodunuza dahil etmeniz gerektiğini söylemiştik :

sonrasında Scanner sınıfında bulunan metodlara erişebilmek için bu sınıf tipinde bir object oluşturmuştuk.

kodu ile scan objesini tanımladık. Bundan sonra Scanner sınıfı içerisindeki metodlara bu scan objesi üzerinden erişeceğiz.

Kullanıcıdan int değer almak için :

Yukarıdaki koda geldiğinde derleyici kullanıcının bir değer girip Enter’a basmasını bekler.

Kullanıcıdan double değer almak için :

Burada dikkat etmemiz gereken kısım double sayının nasıl yazılacağıdır. Çünkü bazı ülkeler 5.71 sayısını nokta ile bazıları ise 5,71 şeklinde virgülle yazıyor olabilir. Bizim bu durumu derleyiciye bildirmemiz gerekiyor.  Nokta şeklinde girmek istiyorsak hangi standardı kullanacağımızı bildirmeliyiz.

kodunu kullanacağız, ancak bu kodun kullanılabilmesi için dahil olduğu package’ın kodumuza import edilmesi lazım :

bu kod ile dahil etmiş olduk. (Ctrl+Shift+O (Eclipse IDE)) Şimdi uygulamasına geçelim :

Kullanıcıdan string değer almak için :

Kullanıcıdan string almak için de nextLine() metodunu kullanacağız.

Böylelikle Java Programlama Dersleri serisinde “Kullanıcıdan input alma” konusunu bitirmiş olduk. Konu ile alakalı sorularınızı aşağıdaki yorum panelini kullanarak bizlerle paylaşabilirsiniz.

Pin It on Pinterest

Daha fazla Java
Java Programlama Dersleri Diziler Arrays
Java Programlama Dersleri, Diziler

Sıfırdan Java programlama dersleri serisinde bu dersimizde " Java Programlama Dersleri, Diziler " konusuna değineceğiz. (Arrays)

Kapat