İlginizi Çekebilir
Java Math Sınıfına Göz Atıyoruz
  1. Ana Sayfa
  2. Java
  3. Java’da Math Sınıfı

Java’da Math Sınıfı

Java’da Math Sınıfı matematiksel işlemler yapmamıza yarayan önemli bir java sınıfıdır. Java Nedir, yazımı yayınladığım zaman C programlama diline benzerlik gösterdiğini söylemiştim. Bu benzerliği C dili ile uğraştıysanız Math sınıfı kullanacağımız zaman sizlere kolaylık sağlayacaktır.

Java’da Math Sınıfı Nedir?

Sınıf içerisinde bizlere matematiksel işlemleri kolay yoldan kullanmamızı sağlayan metotlar bulunmaktadır. Mesela üs alma işlemini basit bir döngü kurarak yapabiliriz ama Java’da Math Sınıfı kullanacağımız zaman 5-6 satırlık kodu bir satıra indirmiş olduğumuzu göreceksiniz.

Math sınıfını kullanırken yazacağımız kod satırı şu şekildedir;
Math.MetotAdi(Parametre)

Bu ifademiz içerisinde MetotAdi olarak belirtilen kısım yapılacak işlem türüdür. Math sınıfını istediğimiz sınıflar içerisinde çağırarak kullanabiliriz.

Math Sınıfı Metotları

Bu metotların fazlalığından dolayı bazı önemli ve genel olarak kullanılan metotların tanıtımını gerçekleştirerek örneklere geçeceğiz.

  • Math.pow(): Math sınıfında bulunan bu metot üs alma işlemini gerçekleştirir. 2 değer alır, Math.pow(taban,üst) şeklinde kullanılır.
  • Math.sqrt(): Bu metot, bir sayının karekökünü bulur. 1 parametre alır. Almış olduğu parametreyi double türünden değere döndürür. Bunun için bir farklı veri tipinde değişkene atanacaksa, cast işleminin gerçekleştirilmesi gerekir.
  • Math.abs(): Bir sayının mutlak değerini almak için kullanılır. Negatif bir sayıyı pozitife çevirerek gösterir. Math.abs() metodunda parametre int türünde ise cast işlemi gerçekleştirmemize gerek yoktur.
  • Math.floor(): Parametre olarak alınan tamsayı değeri bir altındaki değere yuvarlar.
  • Math.ceil(): Bu metot, Math.floor metodunun aksine, parametre olarak aldığı değeri bir üst değere yuvarlar. (Double değer döndürdüğünden dolayı 3 olarak verilen parametreyi 3.0 olarak kabul eder ve yuvarlama işlemi gerçekleştirmez.)
  • Math.max(): 2 parametre alır ve verilen parametrelerden büyük olanı bulur.
  • Math.min(): Bu metot, Math.max metodunun aksine verilen iki sayıdan küçük olanı bulur.
  • Math.random(): Bu metot, rastgele sayı üretmek için kullanılır. Java’da Random sınıfında anlattığımın aksine bu metot 0.0 ile 1.0 arasında double veri tipinde değerler üretir.

Buraya kadar vermiş olduğumuz metotları hafızamızda daha sağlam bir yer edebilmesi için bir örnek içerisinde kullanalım. Bu vereceğimiz örnekte kullanıcıya bir menü gösterelim ve yapmak istediği işleme göre bir JOptionPane kullanarak işlem sonuçlarını gerçekleştireceğiz.

import javax.swing.*;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // Değişken Tanımlaması:
        int yapilacakislem,x,y;
        String yazılacakMetin;
        double z;
        baslangicMenusu();
        System.out.print("\n-> Yapmak İstediğiniz İşlem: ");
        yapilacakislem = scanner.nextInt();
        switch (yapilacakislem){
            case 1:
                x=Integer.valueOf(JOptionPane.showInputDialog("Taban Değerini Girin:"));
                y=Integer.valueOf(JOptionPane.showInputDialog("Üs Değerini Girin:"));
                yazılacakMetin = x+"^"+y+" işleminin sonucu "+mathPow(x,y)+"'.";
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            case 2:
                x=Integer.valueOf(JOptionPane.showInputDialog("Karekök Alınacak Değeri Girin:"));
                yazılacakMetin=x+" girmiş olduğunuz değerin karekök sonucu: "+mathSqrt(x);
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            case 3:
                x=Integer.valueOf(JOptionPane.showInputDialog("Mutlak Değer Alacağınız Değer:"));
                yazılacakMetin="|"+x+"| Mutlak Değeri: "+mathAbs(x);
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            case 4:
                z=Double.valueOf(JOptionPane.showInputDialog("Aşağı Yuvarlanacak Değeri Girin:"));
                yazılacakMetin ="Girmiş Olduğunuz "+z+" değerini aşağı "+mathFloor(z)+" şeklinde yuvarladım.";
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            case 5:
                z=Double.valueOf(JOptionPane.showInputDialog("Yukarı Yuvarlanacak Değeri Girin"));
                yazılacakMetin="Girmiş Olduğunuz "+z+" değerini yukarı"+mathCeil(z)+" şeklinde yuvarladım.";
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            case 6:
                x=Integer.valueOf(JOptionPane.showInputDialog("Sorgulanacak İlk Değeri Girin:"));
                y=Integer.valueOf(JOptionPane.showInputDialog("Sorgulanacak İkinci Değeri Girin:"));
                yazılacakMetin="Girmiş Olduğunuz İlk Değer: "+x+" İkinci Değer: "+y+" Bunlardan Büyük Olan "+mathMax(x,y)+" Değeridir.";
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            case 7:
                x=Integer.valueOf(JOptionPane.showInputDialog("Sorgulanacak İlk Değeri Girin:"));
                y=Integer.valueOf(JOptionPane.showInputDialog("Sorgulanacak İkinci Değeri Girin:"));
                yazılacakMetin="Girmiş Olduğunuz İlk Değer: "+x+" İkinci Değer: "+y+" Bunlardan Küçük Olan "+mathMax(x,y)+" Değeridir.";
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            case 8:
                yazılacakMetin= "Math.Random Olarak Ürettiğim Değer: "+mathRandom();
                JOptionPane.showMessageDialog(null,yazılacakMetin,"İşlem Sonucu",JOptionPane.PLAIN_MESSAGE);
                break;
            default:
                yazılacakMetin="Hatalı Giriş Yaptınız!";
                JOptionPane.showMessageDialog(null,yazılacakMetin,"Hatalı İşlem",JOptionPane.ERROR_MESSAGE);
                break;
        }
    }
    public static void baslangicMenusu(){
        System.out.println("------------------\n-> Java'da Math Sınıfı Örnek Kod Dizisi\n------------------\n1- Math.pow() Kullanımı\n2- Math.sqrt() Kullanımı\n3- Math.abs() Kullanımı\n4- Math.floor() Kullanımı\n5- Math.ceil() Kullanımı");
        System.out.print("6- Math.max() Kullanımı\n7- Math.min() Kullanımı\n8- Math.random() Kullanımı\n------------------");
    }
    public static int mathPow(int taban,int üs){
        return (int)Math.pow(taban,üs);
    }
    public static int mathSqrt(int karekök){
        return (int)Math.sqrt(karekök);
    }
    public static int mathAbs(int mutalk){
        return Math.abs(mutalk);
    }
    public static double mathFloor(double assagiyuvarla){
        return (int) Math.floor(assagiyuvarla);
    }
    public static double mathCeil (double yukariyuvarla){
        return (int) Math.ceil(yukariyuvarla);
    }
    public static int mathMax(int ilkdeger, int ikincideger){
        return Math.max(ilkdeger,ikincideger);
    }
    public static int mathMin (int ilkdeger,int ikincideger){
        return Math.min(ilkdeger,ikincideger);
    }
    public static int mathRandom (){
        return (int) (Math.random()*10);
    }
}

Kod Çıktısı:

Java'da Math Sınıfı
Java’da Math Sınıf Metotları

Örnek içerisinde geçmiş konularda atıfta bulunarak akılda kalıcılığı ve sürekliliği hedeflediğimden dolayı kod dizisini fazla uzattığımı biliyorum. Bu kod dizisini oluştururken uyguladığım adımlar ise şu şekildedir:
#1 Java’da Metotlar, Java’da Klavyeden Veri Alma, Java’da Kontrol Yapıları içeriklerime atıfta bulunabilmek için öncelikle 8 işlem için bir metot tanımlaması ve menü olarak çıktı verebilmek için ekstra 1 metot tanımlaması daha gerçekleştirdim.
#2 Oluşturduğum metotlarda Java’da Math sınıfı metotlarını kullanarak değerler döndürürken catch işlemlerini gerçekleştirdim.
#3 Gerekli olan değişkenleri tanımlayarak switch-case yapısı oluşturdum ve ilgili adımlarda ilgili metotları kullandım.
#4 Elde ettiğim sonuçları JOptionPane kullanarak ekrana çıktı gösterimi sağladım.

Aslında bu anlatımını yaptığım örnek kod dizisi gereksiz uzatılmış olarak gözükse de ilerleyen konularımız içeriğinde nesneye yönelik programlama konularına gireceğimiz için sıklıkla kullanacağımız metotları tekrar etmek istedim. Bu isteğim doğrultusunda kod satırı uzadı ama siz bu kodu çalıştırırken daha sade bir hale getirebilirsiniz.

Java’da Math Sınıfı içerisinde bulunan metotlar bu kadar değil geri kalanlarına da göz gezdirecek olursak onlarda şu şekilde listelenebilir;

  • Math.toDegrees(): Java Math Sınıfı içerisinde bulunan bu metot ile radyanı dereceye çeviririz. Parametre olarak aldığı double veri tipinde radyan değerinin derece karşılığını geri döndürür.
  • Math.toRadians(): Parametre olarak aldığı derece cinsinden değeri bizlere radyan cinsine çevirerek gösterir.
  • Math.sin(): Math sınıfı içerisinde bulunan trigonometrik metotlardan biri olan sin metodu, parametre olarak aldığı radyan cinsinden bir açının sinüsünü bize geri döndürür.
  • Math.asin(): Sin metodunun tersine parametre olarak sinüs değerini alır ve bu değere karşılık gelen açıyı radyan cinsinden bizlere gösterir.
  • Math.cos(): Radyan cinsinden aldığı değeri bizlere kosinüs değeri olarak döndürür.
  • Math.acos(): Asin metoduna benzerlik gösterir. Parametre olarak kosinüs bir değer alır ve bu değeri radyan cinsinde bize gösterir.
  • Math.PI: Pi sayısının 15 basamağının çıktısını verir.

Hadi bu maddelerde verdiğim Java’da Math Sınıfı metotlarına ait bir örnek oluşturalım ve kod çıktısına göz atalım.

public class Main {
public static void main(String[] args) {
        System.out.println("------------------\n-> Java Math Sınıfı Metotları #2\n------------------");
        System.out.println("1- Math.toDegress(1.27) Kullanımı: " + "(1.27) Radyan " + Math.toDegrees(1.27) + " derecedir.");
        System.out.println("2- Math.toRadians(45) Kullanımı: " + "(45) Derece " + Math.toRadians(45) + " radyandır.");
        System.out.println("3- Math.sin(90) Kullanımı: " + Math.sin(Math.toRadians(90)));
        System.out.println("4- Math.asin(1) Kullanımı: " + Math.toDegrees(Math.asin(1)));
        System.out.println("5- Math.cos (60) Kullanımı: " + Math.cos(Math.toRadians(60)));
        System.out.println("6- Math.acos (0) Kullanımı: " + Math.toDegrees(Math.acos(0)));
        System.out.println("7- Math.pi Kullanımı: " + Math.PI + "\n------------------");
    } 
}

Kod Çıktısı:

Java'da Math Sınıfında Bulunan Metotlar
Java Math Sınıf Metotları

Java’da Math Sınıfı konusunu sonlandırmadan önce metot başlıklarına alt bir başlık oluşturmak istiyorum. Bu başlık içerisinde logaritma metotlarını inceleyeceğiz.

Java Logaritma Metotları

Java Math sınıfı içerisinde üç tane logaritma metodu bulunmaktadır. Bu metotların hepsi genel olarak logaritma değeri döndürmesine rağmen farklılık logaritma tabanlarından gelmektedir. Bu metotları şu şekilde sıralayabiliriz;

  • Math.log(): Parametre ile gönderilen değerin doğal doğal logaritmasını döndürür.
  • Math.log10(): Parametre olarak belirlediğimiz değerin 10 tabanında logaritma sonucunu bize gösterir.
  • Math.log1p(): Parametre olarak verilen değerin 1 fazlasının doğal logaritmasını geriye döndürür.

Math sınıfında bulunan logaritma metotları ile alakalı basit bir kod oluşturalım ve çıktısına birlikte göz atalım.

System.out.println("------------------\n-> Java Math Sınıfı Logaritma Metotları\n------------------");
System.out.println("-> 2.719 değerinin doğal logaritması: "+Math.log(2.719)+"\n-> 10 tabanın'da 50'nin logaritmik değeri: "+Math.log10(50));
System.out.println("-> (2.87 + 1)'in doğal logaritması: "+Math.log1p(2.87)+"\n------------------");

Kod Çıktısı:

Java Math Sınıfında bulunan logaritma metodu
Java’da Math Sınıfı Logaritma Metodu

Java’da Math sınıfı konumuzun sonuna gelirken her zaman olduğu gibi aklınıza takılan bir soru veya konu işleyişleri hakkında öneriniz olursa aşağıda bulunan “yorum yap” kısmından benimle iletişime geçebilirsiniz. Java Math sınıfı hakkında daha kapsamlı ve dataylı bir kaynak arıyorsanız buraya tıklayarak Oracle kaynağına ulaşabilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap