13 Şubat 2016 Cumartesi

Algoritma: Java ile girilen sayının tamsayı olup olmadığını anlamak

Merhaba arkadaşlar biliyorsunuz yazılım da int (tamsayı) , double değişimleri çok önemli. Peki bir sayının int değerinde mi double değerinde mi olduğunu nasıl anlarız ?

tamsayı-logoAlgoritmaya ve kodlara geçmeden önce sizlere şunu söylemek istiyorum benim bu algoritmayı çözme nedenim yaptığım bir hesap makinasının sonuç (örnek veriyorum) 2 çıksa da ekrana 2.0 yazmasıydı. Nedeni hesap makinesinde sayı girişlerini double tipiyle almam ve double tipiyle işlemleri yapmamdı ? Ama cevap int çıkınca ekranda gereksiz yere neden virgül ve sıfır çıksın ki. (Örnek : 2.0)

Peki belki buna ihtiyaç duymayacaksınız ama şu var ki bu algoritmayı yazarken java veri tiplerinin arasında değişimi de görmüş olacağız.

Şimdi sorunu düşünelim :
Bir sayının int veri tipinde mi yoksa double veri tipinde mi olduğunu anlamak.

Sorunu anlamak için yapılacak basit yazılım :

Yapacağımız program konsol ile girilen rastgele sayıyı (int ya da double olabilir) double tipinde bir sayı değişkenine atamak. Peki girilen sayı int ya da double olabilirdi peki nede double aldık.
Bu konu veri tipleri arasındaki dönüşüm yaparken ki veri kaybından kaynaklanıyor. Mesela elimizde bir double tipinde sayımız olsun mesela 2.4 eğer biz bu sayıyı  int veri tipine çevirirsek 2 olarak çevrilirdi yanı 0.4 sayımızdan çıkarılırdı ve belleğe 4 olarak geçerdi oysa sayımız 2.4
Sayı değerlerinin olduğu bir programda bu olay çok önemlidir.

Hadi başlayalım.

Programın algoritması şöyle olsun :
  1. Program çalışsın.
  2. Bir sayı girişi istensin.
  3. Girilen sayı double tipinde "sayi" değerine atansın.
  4. Girilen sayının int mi double mı olduğu bulunsun.
  5. İnt ise int, double ise double tipinde ekrana yazdırılsın.
  6. program kapansın.

Girilen sayının tipini bulma algoritması :
  1. Girilen double tipli sayı int değerine çevrilir.
  2. Sonra tekrar double tipine çevrilir.
  3. Çevrilen bu sayının ilk girilen double tipli sayıya eşit olup olmadığına bakılır.
  4. Eşit olup olmadığını birbirinden çıkarılınca 0 kalıp kalmadığına bakılarak anlanabilir.
Not : Neden tekrar Double tipine çevirdik ?
Çünkü eşitliğe bakabilmemiz için iki değişkeninde aynı veri tipinde olması gerekir.

  • Eşitse girilen sayı int tipindedir. İnt tipine çevrilmiş hali ekrana yazdırılır.
  • Eşit değilse sayı double tipindedir. Girilen ilk double tipli sayı aynen yazdırılır.

Gelin şimdi Java yazılım diliyle bu algoritmayı yazalım ve satır satır açıklayalım :


    // Algoritma ve yazılım : Arda Mavi

import java.util.Scanner;
// Konsoldan giriş alacağımız için
// Java kütüphanesinden Scanner sınıfını programımıza
// dahil ediyoruz.

public class main {

public static void main(String[] args){


Scanner giris = new Scanner(System.in);
// Giris adında bir Scanner nesnesi yaratıyoruz.


System.out.print("Bir sayı giriniz : ");
// Ekrana "Bir sayı giriniz : " yazısını yazdırıyoruz.


double sayi;
// Double tipinde, "sayi" isimli bir değişken oluşturuyoruz.


sayi = giris.nextDouble();
// konsoldan girilen double tipindeki sayıyı
// "sayi" isimli değişkene atıyoruz.


int tamsayıhali;
// int tipinde, "tamsayıhali" isimli bir değişken oluşturuyoruz.


tamsayıhali = (int)sayi;
// "sayi" isimli değişkeni int tipine çeviriyotuz ve
// "tamsayıhali" isimli değişkene atıyoruz.


double tekrardoubleçevirme;
// double tipinde, "tekrardoubleçevirme" isimli bir değişken oluşturuyoruz.


tekrardoubleçevirme = (double)tamsayıhali;
// "tamsayıhali" isimli değişkeni double tipine çeviriyotuz ve
// "tekrardoubleçevirme" isimli değişkene atıyoruz.


if(sayi-tekrardoubleçevirme == 0){
// Konsoldan girilen sayı'dan "tekrardoubleçevirme" çıkarılınca
// cevap 0 ise sayılar eşittir ve şu kod satırı çalışır :


System.out.println("Sayı tamsayıdır : "+ tamsayıhali);
// Ekrana "Sayı tamsayıdır : " yazısını yazdırıp yanına
// int'e çevrilmiş sayıyı yazdırıyoruz.


}else{
// Konsoldan girilen sayı'dan "tekrardoubleçevirme" çıkarılınca
// cevap 0 değil ise sayılar eşit değildir ve şu kod satırı çalışır :


System.out.println("Sayı tamsayı değildir : "+ sayi);
// Ekrana "Sayı tamsayı değildir : " yazısını yazdırıp yanına
// Konsola ilk girilen sayıyı yazdırıyoruz.

}


}

}


Umarım yararlı olmuştur.

Not : Bu algoritma Arda Mavi tarafından yazılmıştır. İnternette belki bulunabilir kontrol edilmedi.

Takıldığınız yerleri yorum yaparak ya da sayfamızdaki iletişim bölümünden sorabilirsiniz. 
Değerli yorumlarınızı bekliyorum.

Share this

6 Responses to "Algoritma: Java ile girilen sayının tamsayı olup olmadığını anlamak"

  1. Çok yararlı olmuş. İşime çok yaradı. Çok saolun.

    YanıtlayınSil
  2. Sayfa adını değiştirdiğiniz için hitleriniz düştü diyecekken bir baktım hala aynı hite sahipsiniz.

    YanıtlayınSil
    Yanıtlar
    1. Eski sayfaya girenler, yeni sayfaya otomatik olarak yönlendiriliyorlar.
      Destekleriniz sayesinde.
      Bu arada 71 bin kişilik bir aileyiz artık. Herkese çok teşekkür ederim.

      Sil
  3. Keşke farklı yazılım dilleri ile de yazsaydınız.

    YanıtlayınSil
    Yanıtlar
    1. Yazmayı düşündüm ama basit bir konu. Mantığını anlayarak yapabilirsiniz.
      İstersenizde size atarım istediğiniz dille yazılmış halini.

      Sil