2013-07-19 62 views
2

對不起,如果這太愚蠢和簡單,但我沒有我能想到的每個選項。 這甚至不是真正的編程。但是我在switch語句中有幾行,我已經多次使用。我想不出任何可以存儲所有這些代碼(這些代碼行)並隨時重用的方式。多次重複使用相同的語句

 case 0: 
      bcolor=Color.rgb(240, 255, 255);//Azure 
      break; 
     case 1: 
      bcolor=Color.BLACK; 
      break; 
     case 2: 
      bcolor=Color.BLUE; 
      break; 
     case 3: 
      bcolor=Color.rgb(165, 42, 42);//Brown 
      break; 
     case 4: 
      bcolor=Color.rgb(255, 127, 50);//Coral 
      break; 
     case 5: 
      bcolor=Color.rgb(00, 255, 255);//cyan 
      break; 
     case 6: 
      bcolor=Color.rgb(255, 00, 255);//Fuchsia 
      break; 
     case 7: 
      bcolor=Color.rgb(255, 215, 00);//Gold 
      break; 
     case 8: 
      bcolor=Color.GRAY; 
      break; 
     case 9: 
      bcolor=Color.GREEN; 
      break; 
     case 10: 
      bcolor=Color.rgb(173, 255, 47);//Green Yellow 
      break; 
     case 11: 
      bcolor=Color.rgb(00, 255, 00);//Lime 
      break; 
     case 12: 
      bcolor=Color.MAGENTA; 
      break; 
     case 13: 
      bcolor=Color.rgb(80, 00, 00);//Maroon 
      break; 
     case 14: 
      bcolor=Color.rgb(80, 80, 00);//Olive 
      break; 
     case 15: 
      bcolor=Color.rgb(255, 165, 00);//Orange 
      break; 
     case 16: 
      bcolor=Color.rgb(255, 192, 203);//pink 
      break; 
     case 17: 
      bcolor=Color.rgb(80, 00, 80);//purple 
      break; 
     case 18: 
      bcolor=Color.RED; 
      break; 
     case 19: 
      bcolor=Color.rgb(244, 196, 30);//Saffron 
      break; 
     case 20: 
      bcolor=Color.rgb(192, 192, 192);//Silver 
      break; 
     case 21: 
      bcolor=Color.rgb(238, 82, 238);//Violet 
      break; 
     case 22: 
      bcolor=Color.WHITE; 
      break; 
     case 23: 
      bcolor=Color.YELLOW; 
      break; 

我必須在幾種開關條件下使用所有這些開關情況。不可能將它們綁定在某種標籤或其他東西上。和剛剛打電話給他們時,我想用...

回答

0

我看到和使用的一個更優化的解決方案是將所有這些值存儲在地圖(用於查找的恆定時間複雜度):

public static Map<Integer, Integer> colorMap = new HashMap<Integer, Integer>(); 

static 
{ 
    colorMap.put(0, Color.rgb(240, 255, 255)); 
    colorMap.put(1, Color.BLACK); 
    colorMap.put(2, Color.BLUE); 
    colorMap.put(3, Color.rgb(165, 42, 42)); 
    colorMap.put(4, Color.rgb(255, 127, 50)); 
    colorMap.put(5, Color.rgb(00, 255, 255)); 
    colorMap.put(6, Color.rgb(255, 00, 255)); 
    colorMap.put(7, Color.rgb(255, 215, 00)); 
    colorMap.put(8, Color.GRAY); 
    colorMap.put(9, Color.GREEN); 
    colorMap.put(10, Color.rgb(173, 255, 47)); 
    colorMap.put(11, Color.rgb(00, 255, 00)); 
    colorMap.put(12, Color.MAGENTA); 
    colorMap.put(13, Color.rgb(80, 00, 00)); 
    colorMap.put(14, Color.rgb(80, 80, 00)); 
    colorMap.put(15, Color.rgb(255, 165, 00)); 
    colorMap.put(16, Color.rgb(255, 192, 203)); 
    colorMap.put(17, Color.rgb(80, 00, 80)); 
    colorMap.put(18, Color.RED); 
    colorMap.put(19, Color.rgb(244, 196, 30)); 
    colorMap.put(20, Color.rgb(192, 192, 192)); 
    colorMap.put(21, Color.rgb(238, 82, 238)); 
    colorMap.put(22, Color.WHITE); 
    colorMap.put(23, Color.YELLOW); 
} 


public static int getColor(int lookup) 
{ 
    int color = colorMap.get(lookup); 
    return color == null ? 0 : color; 
} 
+0

非常感謝。這對我來說是完美的....這就是我想要的:) – VipulKumar

+0

@ user2591556很高興我能幫上忙!如果它適合你的話,一定要接受這個答案(你會獲得+2的聲望)。 – Phil

2

包裝這個代碼的函數,調用該函數:

public int getColor(int i) 
{ 
    switch(i) { 
     case 0: 
      return Color.rgb(240, 255, 255);//Azure 
     case 1: 
      return Color.BLACK; 
     case 2: 
      return Color.BLUE; 
     case 3: 
      return Color.rgb(165, 42, 42);//Brown 
     case 4: 
      return Color.rgb(255, 127, 50);//Coral 
     case 5: 
      return Color.rgb(00, 255, 255);//cyan 
     case 6: 
      return Color.rgb(255, 00, 255);//Fuchsia 
     case 7: 
      return Color.rgb(255, 215, 00);//Gold 
     case 8: 
      return Color.GRAY; 
     case 9: 
      return Color.GREEN; 
     case 10: 
      return Color.rgb(173, 255, 47);//Green Yellow 
     case 11: 
      return Color.rgb(00, 255, 00);//Lime 
     case 12: 
      return Color.MAGENTA; 
     case 13: 
      return Color.rgb(80, 00, 00);//Maroon 
     case 14: 
      return Color.rgb(80, 80, 00);//Olive 
     case 15: 
      return Color.rgb(255, 165, 00);//Orange 
     case 16: 
      return Color.rgb(255, 192, 203);//pink 
     case 17: 
      return Color.rgb(80, 00, 80);//purple 
     case 18: 
      return Color.RED; 
     case 19: 
      return Color.rgb(244, 196, 30);//Saffron 
     case 20: 
      return Color.rgb(192, 192, 192);//Silver 
     case 21: 
      return Color.rgb(238, 82, 238);//Violet 
     case 22: 
      return Color.WHITE; 
     case 23: 
      return Color.YELLOW; 
     default: 
      return 0; 
    } 
} 
+0

謝謝。我正在創建一個無效的方法,所以它不起作用。現在它完美地工作... – VipulKumar

0

事情是這樣的:

public int getColor(int option){ 
    switch(option){ 
    // switch statement in here 
    } 
    return bcolor; 
} 

現在你可以調用它是這樣的:

int option = 12 // some option 
int myColor = getColor(option); 
0

如果他們在switch語句中唯一的情況下,你可以把它們放在一個靜態函數塔t返回一個整數,然後調用它(bcolor = MyClass.getColor(int switchVariable))

2

首先,在XML文件中定義顏色可能很明智。

因此,創建這個文件:res/values/colors.xml

並添加顏色是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="azure">#f0ffff</color> 
    <color name="brown">#a52a2a</color> 
</resources> 

,那麼你可以用它們爲:

R.color.azure

http://developer.android.com/guide/topics/resources/more-resources.html#Color

+0

但是,我也必須每次使用它時寫每個案例。我在我的應用中使用了5次相同的顏色案例。所以我必須每次都寫25種顏色(case0到case 24)。 – VipulKumar

0

正如basdwarf說,

包裝這個代碼的函數,調用該函數。

你可以做到這一點(我不接受你所有的情況下):

private void awesomeColorFunction() { 
     case 0: 
      bcolor=Color.rgb(240, 255, 255);//Azure 
      break; 
     case 1: 
      bcolor=Color.BLACK; 
      break; 
     case 2: 
      bcolor=Color.BLUE; 
      break; 
} 

然後調用它在你的代碼只是這樣的:

awesomeColorFunction(); 

但最聰明的辦法是肯定,作爲說Pewiity把你的顏色在一個XML文件

+0

我不能這樣做。它顯示「令牌上的語法錯誤」情況下,斷言預期「 – VipulKumar

+0

我的不好,只是忘了添加開關線。只需使用basdward的答案,他更新了它;-) – WhiskThimble