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");

    }





}
 
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.
Zamanında yapmıştım diye hatırlıyorum hocam😀. Sadece öğrenmek istiyorsa yapabilir ama pratikte çok saçma böyle bir projede dediğim.
 
Hocam buyurun yapmaya çalıştım elimden geldiğince. Çıkış yaparken bazen iki kere 5'i tuşlamak zorunda kalıyorsunuz, çözemedim nedenini ama sanırım istediğiniz gibi bir hesap makinası oldu.
 

Dosya Ekleri

  • NewClass1.txt
    6,5 KB · Görüntüleme: 44
Hocam buyurun yapmaya çalıştım elimden geldiğince. Çıkış yaparken bazen iki kere 5'i tuşlamak zorunda kalıyorsunuz, çözemedim nedenini ama sanırım istediğiniz gibi bir hesap makinası oldu.
Hocam eline sağlık çok güzel olmuş aklıma takılan kısım fonksiyon içinde


if (sayac==1) {
hesap=s1+a;
bu kısım -> sayac++; kısmını neden 1 artırdık ?
 
"Operation" diye interface belirlersin, "Addition", "Subtraction" vs gibi interface'ler bunu extend ederler.

Kullaniciya basta "toplama" , "cikarma" gibi islem sectirmektense direkt input alirsin, bunu parse edip ilgili "operation" implementasyonunu cagirirsin.

Islem onceligi gibi konular icin zaten bunu yapman gerek.

Ayni if-else; switch-case blogunu copy paste ettigin yerde yanlis tasarladim demelisin.

Java'nin functional interface'ine bakabilirsin, tanimlanan fonksiyonlar hep daisy yapilabilecek ogeler. toplama(x,y), cikarma(x,y) vs gibi.



class Addition extends Function<Integer,Integer>. gibi.
 
"Operation" diye interface belirlersin, "Addition", "Subtraction" vs gibi interface'ler bunu extend ederler.

Kullaniciya basta "toplama" , "cikarma" gibi islem sectirmektense direkt input alirsin, bunu parse edip ilgili "operation" implementasyonunu cagirirsin.

Islem onceligi gibi konular icin zaten bunu yapman gerek.

Ayni if-else; switch-case blogunu copy paste ettigin yerde yanlis tasarladim demelisin.

Java'nin functional interface'ine bakabilirsin, tanimlanan fonksiyonlar hep daisy yapilabilecek ogeler. toplama(x,y), cikarma(x,y) vs gibi.



class Addition extends Function<Integer,Integer>. gibi.
Parse olayı da işin içine girerse bir programlama dilinin temeli sayılabilir. Ama zor bir yöntem. İşlemler kolay olsa da işlem önceliği, sinus vs. uğraştırır.
 

Technopat Haberler

Yeni konular

Geri
Yukarı