İçeriğe geç

Scanner (Veri Girişi)

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.


import java.util.Scanner;
Scanner input = new Scanner(System.in);

(System.in → standart giriş akışı yani klavye)


System.out.print("Adınızı girin: ");
String ad = input.nextLine();
System.out.println("Merhaba " + ad + "!");
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);
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.

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.");

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 + ")");

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);
}

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ı”
MetotVeri TipiAçıklama
nextLine()StringSatırın tamamını okur
next()StringBoşlukla ayrılmış ilk kelimeyi okur
nextInt()intTam sayı okur
nextDouble()doubleOndalıklı sayı okur
nextBoolean()booleantrue veya false değeri okur
hasNextInt()booleanSıradaki verinin int olup olmadığını kontrol eder

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();
}
}

KonuAçıklamaÖrnek
ScannerKlavyeden veri almak için kullanılırScanner sc = new Scanner(System.in)
MetotlarnextLine(), nextInt(), nextDouble()Kullanıcıdan veri okur
Kapatmainput.close()Kaynakları serbest bırakır
DikkatnextInt() sonrası nextLine() kullanırken boş satır problemine dikkat etinput.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.