Scanner (Veri Girişi)
🎯 1. Scanner Nedir?
Section titled “🎯 1. Scanner Nedir?”Java’da kullanıcıdan klavyeden veri almak için java.util.Scanner sınıfı kullanılır.
Bu sınıf sayesinde kullanıcıdan string, sayı, boolean gibi birçok veri tipi okunabilir.
🧩 2. Scanner Sınıfını Kullanmak
Section titled “🧩 2. Scanner Sınıfını Kullanmak”🔹 Scanner import etme
Section titled “🔹 Scanner import etme”import java.util.Scanner;🔹 Scanner nesnesi oluşturma
Section titled “🔹 Scanner nesnesi oluşturma”Scanner input = new Scanner(System.in);(System.in → standart giriş akışı yani klavye)
🧠 3. Temel Kullanım
Section titled “🧠 3. Temel Kullanım”🔸 String (metin) okuma
Section titled “🔸 String (metin) okuma”System.out.print("Adınızı girin: ");String ad = input.nextLine();System.out.println("Merhaba " + ad + "!");🔸 Tam sayı (int) okuma
Section titled “🔸 Tam sayı (int) okuma”System.out.print("Yaşınızı girin: ");int yas = input.nextInt();System.out.println("Yaşınız: " + yas);🔸 Ondalıklı sayı (double / float) okuma
Section titled “🔸 Ondalıklı sayı (double / float) okuma”System.out.print("Boyunuzu girin: ");double boy = input.nextDouble();System.out.println("Boyunuz: " + boy);🔸 Boolean okuma
Section titled “🔸 Boolean okuma”System.out.print("Aktif misiniz? (true/false): ");boolean aktif = input.nextBoolean();System.out.println("Durum: " + aktif);⚠️ 4. nextLine() Sorunu (Boş Satır Problemi)
Section titled “⚠️ 4. nextLine() Sorunu (Boş Satır Problemi)”nextInt(), nextDouble() vb. metotlar veri okuduktan sonra Enter tuşunu (yeni satırı) bellekte bırakır.
Sonraki nextLine() çağrısı bu boşluğu okur ve atlama yaşanır.
🔧 Çözüm:
Section titled “🔧 Çözüm:”Veri okuma işlemlerinden sonra input.nextLine(); kullanarak buffer’ı temizle.
System.out.print("Yaşınızı girin: ");int yas = input.nextInt();input.nextLine(); // buffer temizlendi
System.out.print("Adınızı girin: ");String ad = input.nextLine();
System.out.println(ad + " " + yas + " yaşındasınız.");🧮 5. Birden Fazla Veri Okuma
Section titled “🧮 5. Birden Fazla Veri Okuma”Scanner sc = new Scanner(System.in);
System.out.print("Ad: ");String ad = sc.nextLine();
System.out.print("Soyad: ");String soyad = sc.nextLine();
System.out.print("Yaş: ");int yas = sc.nextInt();
System.out.println("Kullanıcı Bilgisi → " + ad + " " + soyad + " (" + yas + ")");🔁 6. Scanner ile Döngü Kullanımı
Section titled “🔁 6. Scanner ile Döngü Kullanımı”Scanner sc = new Scanner(System.in);
for (int i = 1; i <= 3; i++) { System.out.print(i + ". sayıyı girin: "); int sayi = sc.nextInt(); System.out.println("Girdiğiniz sayı: " + sayi);}🚫 7. Scanner’ı Kapatmak
Section titled “🚫 7. Scanner’ı Kapatmak”Kullanım sonunda kaynakları serbest bırakmak için close() metodu çağrılmalıdır.
input.close();⚠️ Ancak, System.in akışı kapanırsa yeniden açılmaz.
Eğer programınızda başka giriş işlemleri yapılacaksa,close()çağrısını en sona koyun.
🧠 8. Sık Kullanılan Scanner Metotları
Section titled “🧠 8. Sık Kullanılan Scanner Metotları”| Metot | Veri Tipi | Açıklama |
|---|---|---|
nextLine() | String | Satırın tamamını okur |
next() | String | Boşlukla ayrılmış ilk kelimeyi okur |
nextInt() | int | Tam sayı okur |
nextDouble() | double | Ondalıklı sayı okur |
nextBoolean() | boolean | true veya false değeri okur |
hasNextInt() | boolean | Sıradaki verinin int olup olmadığını kontrol eder |
🧩 9. Örnek Uygulama
Section titled “🧩 9. Örnek Uygulama”import java.util.Scanner;
public class ScannerOrnek { public static void main(String[] args) { Scanner input = new Scanner(System.in);
System.out.print("Adınızı girin: "); String ad = input.nextLine();
System.out.print("Yaşınızı girin: "); int yas = input.nextInt();
System.out.print("Boyunuzu girin: "); double boy = input.nextDouble();
System.out.println("\n--- Bilgileriniz ---"); System.out.println("Ad: " + ad); System.out.println("Yaş: " + yas); System.out.println("Boy: " + boy);
input.close(); }}🏁 Özet
Section titled “🏁 Özet”| Konu | Açıklama | Örnek |
|---|---|---|
| Scanner | Klavyeden veri almak için kullanılır | Scanner sc = new Scanner(System.in) |
| Metotlar | nextLine(), nextInt(), nextDouble() | Kullanıcıdan veri okur |
| Kapatma | input.close() | Kaynakları serbest bırakır |
| Dikkat | nextInt() sonrası nextLine() kullanırken boş satır problemine dikkat et | input.nextLine() ile çözülür |
💡 Not: Scanner, giriş verilerini okumak için pratik bir sınıftır. Ancak büyük veri veya performans gerektiren durumlarda BufferedReader gibi alternatifler tercih edilir.