JAVA'da Enum Kullanımı Nasıl Olur?

Başlatan lsari86, 23 Temmuz 2012 - 15:46:50

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

lsari86

Arkadaşlar merhaba,
aşağıdaki örnekte de gördüğünüz üzere basit bir Alan Hesap Programı yazdım.




import java.util.Scanner;

public class EnumAlanHesaplari {
   
   
    public static void main(String[] args) {

        Scanner klavye = new Scanner(System.in);// JAVA DA SCANNER NSINIFINA AİT
                                                // KLAVYE ADINDA BİR NESNE
                                                // OLUTURDUK

        System.out
                .println("Alan Hesaplama Programına Hoş Geldiniz... \n KARE  için 1; \n DİKTÖRTGEN için 2; \n DAİRE için 3; \n ÜÇGEN için 4 ü seçin : ");

        // ALAN HESABI YAPILACAK CİSMİ SEÇİYORUZ
        int secim = Integer.MAX_VALUE;
        do {
            if (secim != Integer.MAX_VALUE)
                System.out.println("Lütfen 1 ile 4 Arası Bir Sayı Girin..! ");
            secim = klavye.nextInt();
        } while (secim != 1 && secim != 2 && secim != 3 && secim != 4);
        switch (secim) {

        // KARENİN ALANI İÇİN;
        case 1:
            int kare = Integer.MAX_VALUE;
            do {

                if (kare != Integer.MAX_VALUE)

                    System.out
                            .println("Lütfen SIFIR(0) dan Büyük Bir Sayı Girin..! ");

                System.out.print("KARE nin Kenar Uzunluğunu Girin: ");

                kare = klavye.nextInt();

            } while (kare < 1);
            int kalan = (kare * kare);
            System.out.println("KARENİN ALANI : " + kalan);

            break;

        // DİKTÖRTGENİN ALANI İÇİN;
        case 2:
            int dyuk = Integer.MAX_VALUE;
            do {

                if (dyuk != Integer.MAX_VALUE)

                    System.out
                            .println("Lütfen SIFIR(0) dan Büyük Bir Sayı Girin..! ");

                System.out.print("DİKTORTGEN  in Yüksekliğini Girin: ");

                dyuk = klavye.nextInt();
            } while (dyuk < 1);

            int dgen = Integer.MAX_VALUE;
            do {

                if (dgen != Integer.MAX_VALUE)

                    System.out
                            .println("Lütfen SIFIR(0) dan Büyük Bir Sayı Girin..! ");

                System.out.print("DİKTORTGEN  in Genişliğini Girin: ");

                dgen = klavye.nextInt();
            } while (dgen < 1);

            int dkalan = (dyuk * dgen);
            System.out.println("DİKTÖRTGENİN ALANI : " + dkalan);

            break;
        // DAİRENİN ALANI İÇİN;
        case 3:
            int ycap = Integer.MAX_VALUE;
            do {
                if (ycap != Integer.MAX_VALUE)
                    ;
                System.out
                        .println("Lütfen SIFIR(0) dan Büyük Bir Sayı Girin..! ");
                System.out.println("DAİRE nin Yarı Çapını Girin :");
                ycap = klavye.nextInt();
            } while (ycap < 1);
            double dalan = (3.14 * ycap * ycap);
            System.out.println("DAİRENİN ALANI : " + dalan);
            break;
        // ÜÇGENİN ALANI İÇİN;
        case 4:
            int ab = Integer.MAX_VALUE;
            do {

                if (ab != Integer.MAX_VALUE)

                    System.out
                            .println("Lütfen SIFIR(0) dan Büyük Bir Sayı Girin..! ");

                System.out.print("ÜÇGEN  in AB Kenarını Girin: ");

                ab = klavye.nextInt();
            } while (ab < 1);

            int bc = Integer.MAX_VALUE;
            do {

                if (bc != Integer.MAX_VALUE)

                    System.out
                            .println("Lütfen SIFIR(0) dan Büyük Bir Sayı Girin..! ");

                System.out.print("ÜÇGEN  in BC Kenarını Girin: ");
                bc = klavye.nextInt();
            } while (bc < 1);

            int ca = Integer.MAX_VALUE;
            do {

                if (ca != Integer.MAX_VALUE)

                    System.out
                            .println("Lütfen SIFIR(0) dan Büyük Bir Sayı Girin..! ");

                System.out.print("ÜÇGEN  in CA Kenarını Girin: ");
                bc = klavye.nextInt();
            } while (ca < 1);

            int ucevre = (ab + bc + ca);
            double uu = (ucevre / 2);
            double ualan = (uu * (uu - ab) * (uu - bc) * (uu - ca));
            double kok = Math.sqrt(ualan);
            System.out.println("ÜÇGENİN ALANI : " + kok);

            break;
        }

        klavye.close();
    }

}







Ancak bu programın üst kısmında kodlarımı daha düzenli bir hale getirmek için Enumları kullanmak istedim.
Ve bunun için


package Cisimler;

public enum Cisimler {
    KARE, DIKDORTGEN, DAIRE, UCGEN;
}


diye bir enum oluşturdum. Şimdi bu enum u


public class EnumAlanHesaplari {
   
   
    public static void main(String[] args) {

        Scanner klavye = new Scanner(System.in);// JAVA DA SCANNER NSINIFINA AİT
                                                // KLAVYE ADINDA BİR NESNE
                                                // OLUTURDUK

        System.out
                .println("Alan Hesaplama Programına Hoş Geldiniz... \n KARE  için 1; \n DİKTÖRTGEN için 2; \n DAİRE için 3; \n ÜÇGEN için 4 ü seçin : ");

        // ALAN HESABI YAPILACAK CİSMİ SEÇİYORUZ
        int secim = Integer.MAX_VALUE;
        do {
            if (secim != Integer.MAX_VALUE)
                System.out.println("Lütfen 1 ile 4 Arası Bir Sayı Girin..! ");
            secim = klavye.nextInt();
        } while (secim != 1 && secim != 2 && secim != 3 && secim != 4);
        switch (secim) {

        // KARENİN ALANI İÇİN;
        case 1:


kısmına entegre ederek Case 1 i Case KARE , Case DIKDORTGEN ... şeklinde kullanmak istiyorum. Ancak internette bulduğum örnekleri inceleyince yaptıklarımda çorba oldu.
Sizden ricam kodlara bir el atıp ust ksımı doğru bir şekide düzenleyebilmem için yardımcı olmanız.
Kolaylıklar

cxerpw57

#1
Aslında kod pek enum kullanımına uyumlu değil, yerinizde olsam hesaplama işlemlerini yapan ayrı bir method yapardım, bir parametre ile tüm işlemleri onun içerisinde yapardım.

Ama genede kullanmak istiyorsanız, şekillerinize değerler verip aşağıdaki gibi,

public enum DaysOfWeek {


  Everyday(127),
  Weekend(65),
  Weekdays(62),
  Monday(2),
  Tuesday(4),
  Wednesday(8),
  Thursday(16),
  Friday(32),
  Saturday(64),
  Sunday(1);

  private int bitValue;

  private DaysOfWeek(int n){
    this.bitValue = n;
  }

  public int getBitValue(){
    return this.bitValue;
  }
}


Kodunuzdaki case'lerdeki değerler ile eşleştirmeler yapabilirsiniz DaysOfWeek.getBitValue gibi. Döngüyü buna göre düzenlerseniz çalışacaktır.

İyi çalışmalar dilerim
Yarım hazırlıkla, yarım tedbirle yapılacak taarruz, hiç taarruz etmemekten çok daha fenadır (1922). M.Kemal ATATÜRK
http://canerblt.wordpress.com
twitter : cabulut