2015-07-19 15 views
6

NiyetimJava'da aynı anahtar deyiminde başka bir durumun içinde bir "olgu" mu diyebiliriz?

switch (orderType) { 
     case 1: 
      statement 1; 
      break; 
     case 2: 
      statement 2; 
      break; 
     case 3: 
      **call case 1;** 
      **Call case 2;** 
      break; 
     default: 
      break;` 
} 

biz Java yapabilir miyiz, aynı anahtarı açıklamada başka bir kılıf içerisinde iki dava aramak mı?

+1

Bunu düşünmüyorum, neden yapmak istiyorsunuz? –

+0

"Anahtar durumu" kullanmak, kodunuzun anlaşılmasını kolaylaştırmak anlamına gelir; – Maroun

+0

İlgili [Anahtar ifadesinde bir durumdan diğerine geçiş yapma] (http://stackoverflow.com/questions/16621708/passing-a-value-from-one-case-to-another-in-switch-statement) –

cevap

5

: Yapabileceğin Ne olsa da, bir yöntemde bu blokların her sarın ve bunları yeniden olduğunu . Diğerleri işaret gibi Örneğin,

void foo(int param1, String param2, ...) { 
    switch (param1) { 
     case 0: 
      foo(1, "some string"); 
      break; 

     case 1: 
      //do something 
      break; 

     default: 
      break; 
    } 
} 
5

Hayır, başka bir anahtar durumunda kod snippet'ine atlayamazsınız. Sadece böyle bir başka case blok diyemezsin

switch (orderType) { 
    case 1: 
     someMethod1(); 
     break; 
    case 2: 
     someMethod2(); 
     break; 
    case 3: 
     someMethod1(); 
     someMethod2(); 
     break; 
    default: 
     break; 
} 

void someMethod1() { ... } 
void someMethod2() { ... } 
1

: Bununla birlikte başka davada çağrılabilir kendine ait yöntem haline kodunu çıkarabilir. doğrudan switch davaları etkilemeye mümkün olmasa da, tek bir davadan anahtarın üst yöntemini çağırın ve farklı argümanlar geçebilir

private void doSomething() { 
    // implementation 
} 

private void doSomethingElse() { 
    // implementation 
} 

private void runSwitch(int order) { 

    switch (orderType) { 
      case 1: 
       doSomething(); 
       break; 
      case 2: 
       doSomethingElse(); 
       break; 
      case 3: 
       doSomething(); 
       doSomethingElse(); 
       break; 
      default: 
       break; 
    } 
} 
0

, istenen anahtar durumunda karşılık gelen bir parametre alır bir yöntem içinde sizin anahtar durumlarda uygulayabilir. Bu şalter kasaları, istenen anahtar durumları ile aynı yöntemi tekrar tekrar arayabilir. İşte, bir yıl artık bir yıl olup olmadığını kontrol etmenizi sağlayan tam çalışma örneği:

public class LeapYear { 

    static int year = 2016; 

    public static void main(String[] args) { 

     leapSwitch(1); 

    } 

    public static void leapSwitch(int switchcase) { 

     switch (switchcase) { 

     case 1: { 
      if (year % 4 == 0) { 
       leapSwitch(2); 
      } else { 
       leapSwitch(5); 
      } 
     } 
      break; 

     case 2: { 
      if (year % 100 == 0) { 
       leapSwitch(3); 

      } else { 
       leapSwitch(4); 
      } 
     } 
      break; 

     case 3: { 
      if (year % 400 == 0) { 
       leapSwitch(4); 

      } else { 
       leapSwitch(5); 
      } 
     } 
      break; 

     case 4: { 
      System.out.println(year+ " is a leap year!"); 
     } 
      break; 

     case 5: { 
      System.out.println("Not a leap year..."); 
     } 
      break; 

     } 
    } 
} 
İlgili konular