Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada klavyeden girilen karakterlerin okunması için birkaç değişik yöntem vardır. Örneklerde gösterilen yöntem yalnızca bir başlangıçtır. İlerleyen konularda daha farklı yöntemler ve dataylar aktarılacaktır. Örnek çeşitliliği açısından ön bilgi edinilmesi daha uygun bulunmuştur. Java dilinde, giriş çıkış işlemleri için gerekli olan kavramları(import etme, sınıf ve paket kavramlarını) kısaca açıklayalım. SINIF KAVRAMI Sınıf (class) soyut bir veri tipidir. Java da sınıf (class) kavramını doğada cins isimlere benzetebiliriz. Bir cins kendi başına belirli bir nesne değildir; ancak belirli türden nesnelerin ortak özelliklerini belirten soyut bir kavramdır. Örneğin, ağaç bir cins isimdir. Ama bahçedeki bir elma-ağacı ya da sokaktaki bir çınar-ağacı belirli varlıklardır. Onlar, ağaç sınıfının birer nesnesidir (üyesidir). Java da sınıfları doğadaki cinsler gibi düşürsek, konuyu kavramamız kolaylaşacaktır. Java sınıfı, tıpkı bir cinste olduğu gibi, ortak özelikleri belirlenmiş bir topluluğun adıdır. Bir java sınıfının niteliklerini değişkenlerle (attributes, fields), davranışlarını metotlarla (fonksiyon, procedure) belirleriz. Java programları sınıf (class) lardan oluşur. Bütün sınıflar aynı yapıya sahiptirler. Aralarındaki farkı yaratan şey, içerdikleri değişkenler ve metotlardır. PAKET (package) KAVRAMI Diyelim ki bir başka eve taşınacaksınız. Yani kolileri hazırlama vakti geldi. İlk iş gidip koli bulmak olur heralde, sonra da eşyaları bu kollerin içine düzgün ve anlamlı bir şekilde yerleştirmek. Nasıl yerleştiririz.. Kırılabilecek mutfak eşyalarını bir koliye, giyecekleri bir koliye, temizlik malzemelerini bir ya da birden çok koliye koyarsak hem daha düzenli olurlar hem de aradığımızı daha kolay bulabiliriz heralde. Bu koli paketlerinin mantığının java'da kullanılan paket kavramından hiç bir farklılığı yok. Temel olarak özetlemek gerekirse; Java'da paketler, aynı amaç üzerinde çalışan kod bloklarını bir araya toparlayabilmemiz için kullanılmaktadır. Java sınıflarını düzenli tertipli biçimde biraraya getirmek, organize etmek için kullanılır. Aynı kategorideki ya da benzer görevdeki sınıflar biraraya getirilerek mantıksal bir bütünlük sağlanır. 1
Yazılım mimarisini oluşturmada yardım sağlarlar. Genellikle birbiriyle ilintili olan ve hep birlikte yazılımın belirli bir gereksinimini karşılayan sınıflar aynı paket altına toplanır. Paket dosya sisteminde birer klasörden ibarettirler. Yani yeni bir paket oluşturduğumuzda yazılım geliştirme ortamımız bizim için yeni bir klasör oluşturur be bu paket içindeki sınıflara ait.java dosyaları aynı klasör içinde tutulurlar. Toparlayacak olursak, birbirleriyle işlev ve kullanım açısından ilişkili sınıflar paket adı verilen klasörlerde yer alır. IMPORT KAVRAMI Bir sınıfın kendisi ile ilişkili olmayan bir başka sınıfı kullanabilmesi için sınıf(class) tanımlanmadan önce import edilmesi gerekir. import işlemi kaynak kod o paketi kullanmadan önce yazılmalıdır. Kullanım Şekli: import paket_adi.sinif_adi; Örnek: İmport java.util.*; Şeklindeki tanımlama java.util paketindeki tüm sınıfları çağır anlamındadır. Burada * karakteri tüm sınıflar için kullanılmıştır. ÖNEMLİ: Util paketi ise giriş-çıkış, tarih zaman gibi işlemlere ait sınıfların yer aldığı pakettir. 2
Şimdi gelelim klavyeden giriş yapma işlemine: java.util paketinde yer alan Scanner programı kullanılarak kullanıcının girdiği sayılar, karakterler veya kelimeler okunabilir. Giriş Çıkış işlemleri için java.util.scanner sınıfının yöntemleri kullanılır. System.in Klavyeden bilgi girişi için kullanılır ÖNEMLİ:Klavyeden bilgi girişi yapıldıktan sonra o veri üzerinde işlem yaparken Scanner sınıfının bazı yöntemleri kullanılır. Bu yöntemler, Tablo1' de gösterilmiştir. 3
Scanner giris = new Scanner(System.in); Yukarıda görüldüğü gibi konsoldan girilen karakterleri okumak için standart girişe (System.in) bağlanan bir Scanner objesi oluşturulur. Daha sonra Scanner sınıfının bize sağladığı metotlardan uygun olanını kullanıp klavye girişini okuyabiliriz. isim = giris.nextline(); bu örnekte kullanılan nextline() metodu klavyeden girilen bir satırı okur ve isim değişkenine atar. Sonraki satırda kullanıcıdan alınan isim tekrar cıkışa gönderilmiştir: System.out.println("Merhaba " + isim); Burada dikkat çeken nokta System.out metodunda + işaretinin kullanımıdır. Burada toplama işareti iki kelimeyi birleştirmek amacıyla kullanılmıştır. Bu işlem, ilk dersimizde bahsettiğim gibi matematiksel toplamadan farklı olarak verilen Stringleri arka arkaya ekler. import java.util.scanner; /* * Basit giris/cikis islemleri * Klavyeden girilen ismi okur ve bir degiskene atar * */ public class Lab2_2 { public static void main(string[] args) { //Gireceginiz ismi tutacak bir degisken yaratin String isim; //Klavyeden girilen ismi okuyacak fonksiyon Scanner giris = new Scanner(System.in); //Kullaniciya mesaj yazarak ismini girmesini isteyin System.out.println("Adınız nedir?"); //Simdi kullanicinin adini isim degiskenine atayalım isim = giris.nextline(); //Kullaniciya selam verelim System.out.println("Merhaba " + isim); 4
Java System.out metodu ile çıkış yazdırılırken kullanilabilecek bazı escape karakterleri şunlardır: \" çift tırnak \' tek tırnak \\ ters slash \n yeni satır \r bulunduğu satırın başına gider \t Tab Diğer örnekte yeni satır ve tab karakterleri kullanarak ekrana biçimlenmiş çıktı yazdırmayı göreceğiz. Programda ilk olarak herbir satır için birer adet olmak üzere beş adet System.out metodu kullanılmıştır. İkinci metod ise tek bir System.out metodu ve özel karakterler yardımıyla aynı çıktının elde edilebileceğini göstermektedir. /** * Asagida gorulen ciktiyi veren program * * ADI SOYADI NO NOTU * ---------------------------- * Akile YUVKA 01 A * Belma SIRDAŞ 01 A * */ public class Lab2_3 { public static void main(string[] args) { System.out.println(""); System.out.println("ADI SOYADI NO NOTU"); System.out.println("----------------------------"); System.out.println("Akile YUVKA 01 A"); System.out.println("Belma SIRDAŞ 02 A"); System.out.println("ADI\tSOYADI\tNO\tNOTU\n" + "----------------------------\n" + "Akile\tYUVKA\t01\tA\n" + "Belma\tSIRDAŞ\t02\tA\n "); 5
ÇALIŞMA Kullanıcıdan aldıgı bilgilere göre aşağıdaki şekilde bir sipariş listesi yazdıran bir program yazınız: Adiniz: Belma Soyadiniz: SIRDAŞ Kac kg Domates: 3.5 Kac kg Biber: 2.5 Kac kg Patlican: 4.7 Musteri Adi: Belma Musteri Soyadi: SIRDAŞ Siparis Detaylari ------------------------------- Domates Biber Patlican 3.5 kg 2.5 kg 4.7 kg Afiyet Olsun. Ondalık sayıları saklamak için float sayı türünü, klavyeden ondalık sayıları okumak için ise Scanner classının nextfloat() metodunu kullanınız. 6