Java'da metodlar arası geçiş nasıl yapılır?

Eiesenhower

Hectopat
Katılım
8 Nisan 2020
Mesajlar
824
Yer
İstanbul
Metodlar ile şöyle basit bir hesap makinesi yaptım. Aklıma takılan yerler var. Örneğin "toplama" fonksiyonunu çağırdğım zaman girdiğim sayıları sorunsuz şekilde topluyorum ama ben toplama fonksiyonun içindeyken mesela 2+5+6 yı toplarken -5 yazıp çıkarma fonksiyonuna geçmek istiyorum. Aslında geçiş yaptım ama bu sefer toplama fonksiyonun tuttuğu hesap toplamını olaya dahil etmedi sıfırdan çıkarma fonksiyonuna başladı. Özet olarak toplama fonksiyonuna girip 2+5+6 i toplayıp ardından çıkarma fonksiyonuna geçiş yapıp aynı zamanda toplama fonksiyonunda tutulan 13 sayısından nasıl devam edebilirim?


Java:
import java.util.Scanner;

public class Metod {
    int c;

 
    static int toplama(){
        int a=0,hesap=0,girdi=0,adet=1,d=0;
        Scanner input=new Scanner(System.in);

        while (a>=0){
            System.out.println("Bir sayı ya da işlem giriniz :");
            a= input.nextInt();
        
          
            girdi=a;
            hesap=girdi+hesap;
            System.out.println(hesap);

        }
        return hesap;
    }
    static int cikarma(){
      
        int a=0,hesap=0,girdi=0,adet=1,d;
        Scanner input=new Scanner(System.in);
        while(a>=0){
            System.out.println("Bir sayı giriniz");
            a= input.nextInt();
            girdi=a;
            hesap=girdi-hesap;
            System.out.println(hesap);
        }
        return hesap;
    }
    static int carpma(){
        int a=0,hesap=1,girdi=0,adet=1;
        Scanner input=new Scanner(System.in);
        while (a>=0){
            a= input.nextInt();
            girdi=a;
            hesap=girdi*hesap;
            System.out.println(hesap);
        }
        return hesap;
    }
    static int bolme(){
        double a=0,hesap=1,girdi=0,adet=1;
        Scanner input=new Scanner(System.in);
        while (a>=0) {
            a = input.nextInt();
            girdi = a;
            hesap = girdi / hesap;
            System.out.println(hesap);

        }

        return (int) hesap;
    }
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.println("İşlem seciniz");
        int c= input.nextInt();
        if(c==1){

            toplama();

        }
        else if(c==2){
            cikarma();


        } else if (c==3) {
            carpma();

        } else if (c==4) {
            bolme();

        }
        else System.out.print("Hatalı işlem yaptınız");

    }





}
 
Sayıyı eksi olarak belirtirsen zaten çıkarma işlemi yapar. Kanki birde swicht case mantığıyla yap. Böyle if else ile yapma direkt.
 
Sayıyı eksi olarak belirtirsen zaten çıkarma işlemi yapar. Kanki birde swicht case mantığıyla yap. Böyle if else ile yapma direkt.
hayır burada sorun eksi yazmak değil bolme fonksiyonuna nasıl geçiş yapacağım bu sefer ? toplama fonksiyonunda iken 2+3+5 /6 yapamam bu sefer hata verecek. Aslında haklısın o an if else ile yapmak geldi aklıma switch case daha mantıklı bu örnekte
 
Fonksiyonlar parametre alırlar. Bir fonksiyondan diğer fonksiyonu çağırırken ona parametreler aracılığı ile değişkenleri verebilirsiniz.

Fonksiyonların tüm özelliklerini öğrenmeye çalışmak şu anda ilerlemen için en iyi yol olacaktır. Geriye değer döndüren metodları da öğrenirsen eğer metodlarla ilgili büyük bir kısmı kafanda oturtmuş olacaksın. Bu şekilde de proje düzenini nasıl daha az tekrar eden kod ile yazabileceğini de bulmuş olursun.

Java:
public class Main {
    
    // deneme fonksiyonu parametre olarak str (String) ve num (int) alıyor.
    static void deneme(String str, int num) {
        
    }
    
    // toplama fonksiyonu ise a ve b parametrelerini alıyor
    static void toplama(int a, int b) {
        System.out.println("Toplama sonucu: " + (a+b) );
    }
    
    public static void main(String[] args) {
        deneme("merhaba", 154);
        
        toplama(15, 25);       
    }
    
}
 
Kanki bence hiç böyle bir şey ile uğraşma derim. NetBeans ile gir direkt form oluştur. Oraya - + * / gibi butonları yerleştir. Daha güzel olur.
 
Hocam recursive mantığını hala anlayamadım örneğin bu uygulamada bize ne gibi faydası olabilir

Kanki bence hiç böyle bir şey ile uğraşma derim. NetBeans ile gir direkt form oluştur. Oraya - + * / gibi butonları yerleştir. Daha güzel olur.
Kankam ben metodlar arası geçiş mantığını çözmeye çalışıyorum yoksa sonuca ulaşmak için 50 tane yol var.
 
Aradığınız şey aslında polymorphism gibi geldi.
Sonuç olarak farklı işlemleri farklı fonksiyonlardan bekleyemezsiniz. Bu nedenle metodu aşırı yüklemeniz gerekebilir.

Ya da metottan bir kip de istenebilir:
Java:
class MathClass
{
    public float Operation(float first, float second, String open_mode)
    {
        if(open_mode == "+")
        {
            return first + second;
        }
        else if(open_mode == "-")
        {
            return first - second;
        }
        else if(open_mode == "*")
        {
            return first * second;
        }
        else if(open_mode == "/")
        {
            return first / second;
        }
        return null;
    }
}
 
Son düzenleme:
Polymorphism bir sınıfın birden çok şekilde implement edilmesine deniyor.

Hocam recursive mantığını hala anlayamadım örneğin bu uygulamada bize ne gibi faydası olabilir
Bazı algoritmalarda gerçekten işe yarıyor. İlerledikçe fark edersin bunu.
 
Biliyorum. Eğer işlemleri çeşitlendirirse farklı işlemleri aynı işlem üzerinden yapabilir. Ama bir kip atamak daha mantıklı geldi bu kez.
Matematiğin 4 işlemini yapıyor hocam neyi çeşitlenecek daha. Giriş düzeyinde ya her işlem için ayrı metodlar açılır ya da senin yaptığını switch case ile yaparlar.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…