You are hereDosyadaki Sayıları Toplama

Dosyadaki Sayıları Toplama


By yasin - Posted on 13 Ocak 2009

Diyelim ki bir dosya içinde her bir satırda sayılar yer alıyor. Bu sayıların toplamını öğrenmek istiyoruz. Java'da bunu yapan program nasıl olur?

  1. Önce sınıfımızı oluşturalım.
  2. public class DosyadanTopla { }

  3. Uzun uzun yeni metodlarla uğraşmadan, çalıştırılabilir main metodumuzu oluşturalım.
  4. public static void main(String[] args) { }

  5. Kodlarımızı main metodu içine yazmaya başlayalım. Bir dosyadan okuyacağımıza göre bir dosyaya (File); bu dosyayı okuyacak olan bir okuyucuya (FileReader); bir de okunan değeri satır satır alabilmek için tampona (BufferedReader) ihityacımız var. hemen onları tanımlayalım.
  6. File dosya;
    FileReader okuyucu;
    BufferedReader tampon;

  7. Tabii ki bu değişken tipleri Java'nın çekirdek kütüphanesinde bulunmuyor. O yüzden bu değişken tiplerini barındıran kütüphane olan java.io'yu, tüm sınıflarıyla ithal etmemiz lazım. İthal dediysem import yani :) Bunu da ta sınıfın en başında yapmamız gerekiyor.
  8. import java.io.*;

  9. Bundan sonra dosyadan veri alışverişi yapılacağını göz önünde bulundurarak bu dosyanın her zaman orda olacağını garanti edemeyeceğimizi biliyoruz. Dolayısıyla da bu dosya alışverişini bir try-catch içinde belitrmemiz lazım.
  10. try { } catch (Exception e) { }

  11. Şimdi de try içine dosyamızı, okuyucumuzu ve tamponumuzu döşeyelim.
  12. dosya = new File("dosya.txt");
    okuyucu = new FileReader(dosya);
    tampon = new BufferedReader(okuyucu);

  13. Burada dosyamızı, java dosyamızla aynı klasörde olduğunu ve adının dosya.txt olduğunu varsayarak verdik. Yani göreli yol (relative path) vermiş olduk. Eğer mutlak yol (absolute path ya da full path) vermek istersek de şu şekilde yazabiliriz:
  14. dosya = new File("c:\\dosya.txt");

  15. Ters bölü (ters slash - slaş(?)) yani "\" işareti Java için bir kaçış karakteri olduğu için, tırnak işaretleri arasında bunun normal bir \ işareti olduğunu Java'ya söylememiz gerekiyor. Bunun için de onu anlatan kaçış karakterini yani iki ters bölüyü yazıyoruz. \\ şeklinde. Bundan sonra da toplam sayıyı tutması için bir değişken tanımlayabliriz. Eğer dosya içindeki satırlar sadece tam sayılardan oluşuyorsa buna int ya da çok fazla satır varsa long değer verebiliriz. Ama içinde ondalıklı değerler de varsa toplam değişkenimizi double yapmamız gerekiyor. Biz örnek için double diyelim.
  16. double toplam = 0;

  17. Bu dosyadaki verileri satır satır okutacağımız için, tampon adlı değişkenimizin readLine() metodunu kullanacağız. Burdan gelen değer bir String olacaktır. Bunu da double değere döndürmemiz gerekir ki toplayabilelim. Bu dönüşümü Java'nın Double sınıfındaki parseDouble() metodunu kullanarak yapalım. Dönüşüm sonucunda aldığımız değeri de sayi adli double değişken tanımlayıp ona atayalım.
  18. double sayi = Double.parseDouble(girdi.readLine());

  19. Bu işlemi her satır için yapacağız. bu yüzden bir döngü içine koymamız gerekiyor. Döngünün ne kadar süreceği, dosyadaki satır sayısına bağlı oalrak değişiyor. Satır sayısını bilerek buna göre bir for döngüsü yazılabilir ama dosyanın satır sayısının bilinmediğini ya da değiştiğini düşünelim. Bu şekilde yapıya biraz daha modülerlik kazandıralım. Bunu da BufferedReader sınıfının ready() metodunu kullanarak sağlayabiliriz. Eğer tampon adlı BuffredReader nesnemiz dosyayı okurken önünde bir satır varsa, bu satırı okusun. satır bittiyse döngüden çıksın istiyoruz. Bu metot bize bir boolean değer döndürecek. Yani okunacak bir satır varsa true, yoksa false değeri döner. Bunu da bir while döngüsüne koyalım.
  20. while (tampon.ready()) {
         double sayi = Double.parseDouble(girdi.readLine());
    }

  21. İşlem satır için bitince satırdan aldığı değeri toplam değişkenine eklemesi lazım.
  22. toplam += sayi;

  23. En son olarak da döngüden çıkınca toplamı ekrana bastıralım.
  24. System.out.println(toplam);

  25. Bütün bunları bir try-catch kalıbına koyduğumuzu söylemiştik. catch bloğuna da istisna (Exception) olursa hatanın izini (StackTrace) göstermesi için e.printStackTrace() kodunu yazarsak güzel olur.
  26. Kodun hepsini tümden görelim;
    package org.hosaf.code;

    import java.io.*;

    public class DosyadanTopla {
         public static void main(String[] args) {
              File dosya;
              FileReader okuyucu;
              BufferedReader tampon;
              
              try {
                   dosya = new File("dosya.txt");
                   okuyucu = new FileReader(dosya);
                   tampon = new BufferedReader(okuyucu);
                   
                   double toplam = 0;
                   
                   while (tampon.ready()) {
                        double sayi = Double.parseDouble(girdi.readLine());
                        toplam += sayi;
                   }
                   System.out.println(toplam);
              } catch (Exception e) {
                   e.printStackTrace();
              }
         }
    }

Etiketler

Bu konuda ben de fikrimi paylaşmak istiyorum

  • Site ve e-posta adreslerini biz sizin için otomatik olarak tıklanabilir bağlantıya çeviriyoruz.
  • Kullanabileceğiniz HTML kodları: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><b><i>
  • Satır ve paragraflar otomatik olarak bölünürler.

Biçimleme seçenekleri hakkında daha fazla bilgi


Mollom CAPTCHA (play audio CAPTCHA)
Yukarıda görünen harfleri bir zahmet yazıverin. Eğer okumakta sıkıntı çekiyorsanız sayfayı yenileyin (F5 tuşuna basabilirsiniz), yeni bir yazı oluşturulacaktır. İnşallah yenisini kolayca okuyabilirsiniz.

Pageboss.com

RSS'e üye olun da reytingimiz artsın!

Blog

Musiki