Java Scanner Sınıfı: Kullanımı ve Örnekler

Posted by

Java programlama dilinde kullanıcıdan veri girişi almak, dosya okumak veya diğer giriş işlemlerini yapmak için java.util paketinde yer alan Scanner sınıfı kullanılır. Bu sınıf, Java’nın standart giriş akışını (standart input stream) temsil eder ve kullanıcının konsoldan veya dosyadan veri girişi yapmasını sağlar. Bu yazıda, Scanner sınıfının nasıl kullanılacağını ve farklı senaryolarda nasıl uygulandığını örneklerle açıklayacağız. Ayrıca bakınız.

java scanner kullanımı

Scanner Sınıfını İçe Aktarma
Java programında Scanner sınıfını kullanabilmek için öncelikle bu sınıfı içe aktarmamız gereklidir. Bunun için “java.util” paketini kullanırız.

import java.util.Scanner;

Konsoldan Veri Okuma
Scanner sınıfını kullanarak kullanıcıdan konsoldan veri okuyabiliriz. Konsoldan giriş yapmak için System.in akışını kullanırız.

Scanner scanner = new Scanner(System.in);

System.out.print("Adınız: ");
String ad = scanner.next();

System.out.print("Soyadınız: ");
String soyad = scanner.next();

System.out.println("Merhaba, " + ad + " " + soyad + "!");

Farklı Veri Tiplerini Okuma
Scanner sınıfı, kullanıcıdan farklı veri tiplerini okumak için çeşitli metotlar sağlar. Örneğin, next(), nextInt(), nextDouble() gibi metotlarla kullanıcıdan metin, tamsayı veya ondalıklı sayı okuyabiliriz.

Scanner scanner = new Scanner(System.in);

System.out.print("Yaşınız: ");
int yas = scanner.nextInt();

System.out.print("Ağırlığınız (kg): ");
double agirlik = scanner.nextDouble();

System.out.println("Yaşınız: " + yas + ", Ağırlığınız: " + agirlik);

Dosyadan Veri Okuma
Scanner sınıfı aynı zamanda dosyalardan veri okumak için de kullanılabilmektedir. Bunu yapmak için dosyanın yolunu belirtmemiz yeterlidir.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class DosyaOkuma {

    public static void main(String[] args) {
        try {
            File dosya = new File("veriler.txt");
            Scanner scanner = new Scanner(dosya);

            while (scanner.hasNextLine()) {
                String satir = scanner.nextLine();
                System.out.println(satir);
            }

            scanner.close();
        } catch (FileNotFoundException e) {
            System.out.println("Dosya bulunamadı: " + e.getMessage());
        }
    }
}

Scanner Sınıfını Kapatma
Scanner sınıfını kullanıldıktan sonra kapatmak iyi bir uygulama yöntemidir. Bu, kaynakların (konsol, dosya vb.) düzgün bir şekilde serbest bırakılmasını sağlar.

Scanner scanner = new Scanner(System.in);

System.out.print("Adınız: ");
String ad = scanner.next();

scanner.close(); // Scanner kapatılıyor

System.out.println("Merhaba, " + ad + "!");

Java Scanner Örnek Proje

İşte Java’da Scanner sınıfını kullanarak basit bir kullanıcı kayıt ve bilgi sorgulama uygulaması örneği:

  1. Kullanıcı.java (Model Sınıfı):
public class Kullanici {
    private String ad;
    private String soyad;
    private int yas;

    // Getter ve Setter metodları (varsayılan olarak)

    @Override
    public String toString() {
        return "Kullanici{" +
                "ad='" + ad + '\'' +
                ", soyad='" + soyad + '\'' +
                ", yas=" + yas +
                '}';
    }
}
  1. KullaniciKayitUygulamasi.java (Ana Uygulama Sınıfı):
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class KullaniciKayitUygulamasi {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Kullanici> kullaniciListesi = new ArrayList<>();

        while (true) {
            System.out.println("1 - Yeni Kullanıcı Kaydı");
            System.out.println("2 - Kullanıcıları Listele");
            System.out.println("3 - Çıkış");
            System.out.print("Seçiminiz: ");
            int secim = scanner.nextInt();

            switch (secim) {
                case 1:
                    Kullanici yeniKullanici = new Kullanici();

                    System.out.print("Ad: ");
                    yeniKullanici.setAd(scanner.next());

                    System.out.print("Soyad: ");
                    yeniKullanici.setSoyad(scanner.next());

                    System.out.print("Yaş: ");
                    yeniKullanici.setYas(scanner.nextInt());

                    kullaniciListesi.add(yeniKullanici);
                    System.out.println("Kullanıcı kaydedildi.\n");
                    break;

                case 2:
                    if (kullaniciListesi.isEmpty()) {
                        System.out.println("Kayıtlı kullanıcı bulunmamaktadır.\n");
                    } else {
                        System.out.println("Kullanıcılar:");
                        for (Kullanici kullanici : kullaniciListesi) {
                            System.out.println(kullanici);
                        }
                        System.out.println();
                    }
                    break;

                case 3:
                    System.out.println("Uygulama kapatılıyor...");
                    scanner.close();
                    System.exit(0);

                default:
                    System.out.println("Geçersiz seçim. Lütfen tekrar deneyin.\n");
            }
        }
    }
}

Bu örnek proje, kullanıcıdan ad, soyad ve yaş bilgilerini alarak bir kullanıcı listesi oluşturur ve listelenen kullanıcıları gösterir. Kullanıcılar eklenip listelendikten sonra uygulamadan çıkış yapabilirsiniz.

(Ana menü açılır)
Seçiminiz: 1
Ad: John
Soyad: Doe
Yaş: 30
Kullanıcı kaydedildi.

Seçiminiz: 1
Ad: Jane
Soyad: Smith
Yaş: 25
Kullanıcı kaydedildi.

Seçiminiz: 2
Kullanıcılar:
Kullanici{ad='John', soyad='Doe', yas=30}
Kullanici{ad='Jane', soyad='Smith', yas=25}

Seçiminiz: 3
Uygulama kapatılıyor...

Bu basit kullanıcı kayıt ve bilgi sorgulama uygulaması, Scanner sınıfının kullanımını ve kullanıcı girişlerini nasıl alabileceğinizi göstermek için tasarlanmıştır. Daha karmaşık projelerde farklı işlemleri ve veritabanı entegrasyonunu ekleyerek uygulamayı genişletebilirsiniz.

Önemli Noktalar

Scanner sınıfını kullanırken dikkat edilmesi gereken bazı önemli noktalar şunlardır:

  1. Veri Tipi Uyumluluğu: Kullanıcıdan alınacak verileri, beklenen veri tiplerine uygun şekilde almak önemlidir. Kullanıcıdan farklı bir veri tipi girişi almak, programın hatalı çalışmasına neden olabilmektedir.
  2. Kullanıcı Girişi Kontrolü: Kullanıcı girişlerini kontrol etmek, uygulamanın güvenliğini ve istikrarını sağlamak için önemlidir. Olası hatalı girişleri ele almak, uygulamanın çökmesini önlemeye yardımcı olabilmektedir.
  3. Bellek Yönetimi: Scanner nesnesini artık kullanmadığınızda, bellek kaynaklarını serbest bırakmak için close() metodunu çağırmalısınız. Bu, bellek sızıntılarının önüne geçmek için önemlidir.
  4. Dosya Okuma/Dosya Yolu Kontrolü: Dosyadan veri okuyorsanız, dosyanın var olduğundan ve doğru yolu belirttiğinizden emin olmalısınız. Dosya yoksa veya dosya yolu yanlış ise program hata verebilmektedir.
  5. Sonsuz Döngü Kontrolü: Scanner sınıfını kullanarak kullanıcıdan giriş alacağınız bölümlerde sonsuz döngülerden kaçınmalısınız. Kullanıcıya çıkış seçeneği sunmalısınız ve programı düzgün bir şekilde sonlandırmalısınız.
  6. Scanner Sınıfının Performansı: Scanner, büyük veri kümesi gibi yoğun işlemler için en verimli sınıf değildir. Büyük verileri okurken performansı etkileyebilmektedir. Özellikle bu nedenle büyük veri okumaları için daha uygun alternatifler kullanılmalıdır.
  7. Try-with-Resources Kullanımı: Java 7 ve sonraki sürümlerde try-with-resources yapısını kullanarak Scanner sınıfını otomatik olarak kapatmayı unutmamak önemlidir. Bu, kaynakların güvenli bir şekilde serbest bırakılmasını sağlar.
try (Scanner scanner = new Scanner(System.in)) {
    // Scanner ile kullanıcı girişi alınır.
} catch (Exception e) {
    // Hata durumlarını ele alınır.
}

Scanner sınıfını kullanırken yukarıda belirtilen dikkat edilmesi gereken yerlere dikkat etmek önemlidir. Bu uygulamanın güvenli ve hatasız bir şekilde çalışmasını sağlar. Veri uyumluluğunu kontrolü, hatalı girişler ve bellek yönetimine dikkat etmek, programınızın sağlıklı çalışmasını destekler. Ayrıca, Scanner sınıfının performans sınırlamalarını ve kullanıcı girişi kontrollerini göz önünde bulundurmak, daha iyi ve güvenli uygulamalar geliştirmenize yardımcı olacaktır.

Bu yazıda, Java Scanner sınıfının nasıl kullanılacağını ve kullanıcıdan veri girişi almak veya dosyalardan veri okumak için nasıl uygulandığını örneklerle açıkladık. Scanner sınıfı, veri girişi işlemlerini kolaylaştırır ve Java programcıları tarafından sıkça kullanılan önemli bir araçtır. Dosyadan veri okumak, etkileşim kurmak veya dosyalardaki verileri işlemek gibi çeşitli senaryolarda Scanner sınıfını kullanabilirsiniz.

Java Spring Nedir? Temel Kavramlar, Kullanım ve Kurulum için Tıklayınız.

İlginizi Çekebilir

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir