SORU
23 Mayıs 2013, PERŞEMBE


Bir iki değerleri kullanarak switch case deyimi

Benim kod, program bir metin kullanıcı tarafından girilen bağlı olarak yapar. Benim kod gibi görünüyor:

switch (name) {
        case text1: {
            //blah
            break;
        }
        case text2: {
            //blah
            break;
        }
        case text3: {
            //blah
            break;
        }
        case text4: {
            //blah
            break;
        }

Ancak, davalar text1 text4 içindeki kod aynı. Bu nedenle eğer benim gibi bir şey uygulamak mümkün olacağını merak ediyordum

case text1||text4: {
            //blah
            break;
        }

|| operatör çalışmaz durumda deyim biliyorum ama orada bir şey kullanabilirim benzer.

CEVAP
23 Mayıs 2013, PERŞEMBE


Kullanımı aşağıdaki gibi CASE Her iki ifade de olabilir.

  case text1: 
  case text4:{
            //blah
            break;
        }

BU örneğe BAKIN:kod örneği, belirli bir ay, gün sayısını hesaplar:

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

        int month = 2;
        int year = 2000;
        int numDays = 0;

        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                numDays = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                numDays = 30;
                break;
            case 2:
                if (((year % 4 == 0) && 
                     !(year % 100 == 0))
                     || (year % 400 == 0))
                    numDays = 29;
                else
                    numDays = 28;
                break;
            default:
                System.out.println("Invalid month.");
                break;
        }
        System.out.println("Number of Days = "
                             numDays);
    }
}

Bu kodun çıktısı şöyledir:

Number of Days = 29

FALLTHROUGH:

İlgi çekici başka bir kırılma noktası ifadesidir. Her break deyimi sona kapsayan switch deyimi. Kontrol akışı ile devam ediyor anahtar bloğu aşağıdaki ilk deyim. Break ifadeleri onları blokları fall through switch açıklamaları nedeniyle olmadan gerekli: eşleşen case etiketinden sonra Tüm ifadeleri idam edilir sıra, sonraki dava etiketleri ifadesi ne olursa olsun, break deyimi kadar karşılaştı.

ÖRNEK KOD:

public class SwitchFallThrough {

    public static void main(String[] args) {
        java.util.ArrayList<String> futureMonths =
            new java.util.ArrayList<String>();

        int month = 8;

        switch (month) {
            case 1:  futureMonths.add("January");
            case 2:  futureMonths.add("February");
            case 3:  futureMonths.add("March");
            case 4:  futureMonths.add("April");
            case 5:  futureMonths.add("May");
            case 6:  futureMonths.add("June");
            case 7:  futureMonths.add("July");
            case 8:  futureMonths.add("August");
            case 9:  futureMonths.add("September");
            case 10: futureMonths.add("October");
            case 11: futureMonths.add("November");
            case 12: futureMonths.add("December");
            default: break;
        }

        if (futureMonths.isEmpty()) {
            System.out.println("Invalid month number");
        } else {
            for (String monthName : futureMonths) {
               System.out.println(monthName);
            }
        }
    }
}

Bu kodun çıktısı şöyledir:

August
September
October
November
December

Dizeleri kullanarak switch İfadeleri

Java SE 7 ve daha sonra, anahtarı Dize bir nesne kullanabilirsiniz deyimi tabir. Aşağıdaki kod örneği, , Dize değerine göre ay sayısını gösterir ay ismi

public class StringSwitchDemo {

    public static int getMonthNumber(String month) {

        int monthNumber = 0;

        if (month == null) {
            return monthNumber;
        }

        switch (month.toLowerCase()) {
            case "january":
                monthNumber = 1;
                break;
            case "february":
                monthNumber = 2;
                break;
            case "march":
                monthNumber = 3;
                break;
            case "april":
                monthNumber = 4;
                break;
            case "may":
                monthNumber = 5;
                break;
            case "june":
                monthNumber = 6;
                break;
            case "july":
                monthNumber = 7;
                break;
            case "august":
                monthNumber = 8;
                break;
            case "september":
                monthNumber = 9;
                break;
            case "october":
                monthNumber = 10;
                break;
            case "november":
                monthNumber = 11;
                break;
            case "december":
                monthNumber = 12;
                break;
            default: 
                monthNumber = 0;
                break;
        }

        return monthNumber;
    }

    public static void main(String[] args) {

        String month = "August";

        int returnedMonthNumber =
            StringSwitchDemo.getMonthNumber(month);

        if (returnedMonthNumber == 0) {
            System.out.println("Invalid month");
        } else {
            System.out.println(returnedMonthNumber);
        }
    }
}

Bu kodun çıktısı, 8.

FROM Java Docs

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007
  • Modus Recordings

    Modus Record

    26 Kasım 2008