2017-02-18 67 views
0

我創建了一個腳本,根據所選選項顯示結果。代替Android的「if else」邏輯的替代編碼

我需要:A,B,C,d(0,1,-1)

int A = 0; 
int B = 0; 
int C = 0; 
int D = 0; 

Ansver將16組合中的一個。

if A = 1 = A1; 
if A = -1 = A2; 
if B = 1 = B1; 
if B = -1 B2; 
if C = 1 = C1; 
If C = -1 = C2; 
If D = 1 = D1; 
if D = -1 = D1; 

A1;B1;C1;D1 = Nr1 
A1;B1;C1;D2 = Nr2 
A1;B1;C2;D1 = Nr3 
A1;B1;C2;D2 = Nr4 
A1;B2;C1;D1 = Nr5 
A1;B2;C1;D2 = Nr6 
A1;B2;C2;D1 = Nr7 
A1;B2;C2;D2 = Nr8 
A2;B1;C1;D1 = Nr9 
A2;B1;C1;D2 = Nr10 
A2;B1;C2;D1 = Nr11 
A2;B1;C2;D2 = Nr12 
A2;B2;C1;D1 = Nr13 
A2;B2;C1;D2 = Nr14 
A2;B2;C2;D1 = Nr15 
A2;B2;C2;D2 = Nr16 

我想顯示潛在的變體。
當你按下的組合:A1, B1 = "Nr1,Nr2,Nr3,Nr4"
當你按下的組合:A1, D1 = "Nr1,Nr3,Nr5,Nr7"
以後會更多的變數EFGH ....等等。但問題的答案將僅16

可能是什麼邏輯,我有點卡住了?
If/Else似乎太長。

if (A == 1) { 
     if (B == 1) { 
      if (C == 1) { 
       if (D == 1) { 
        scoreTeamA = "Nr1"; //A1,B1,C1,D1 
       } else if (D == -1) { 
        scoreTeamA = "Nr2"; //A1,B1,C1,D2 
       } else scoreTeamA = "Nr1, Nr2"; //A1,B1,C1 
      } else if (B == 1) { 
       if (D == 1) { 
        scoreTeamA = "Nr3"; //A1,B1,C1,D1 
       } else if (D == -1) { 
        scoreTeamA = "Nr4"; //A1,B1,C1,D2 
       } else scoreTeamA = "Nr3,Nr4"; //A1,B1,C2 
      } else scoreTeamA = "Nr1,Nr2,Nr3,Nr4"; //A1,B1 
     } else if (B == -1) { 
      scoreTeamA = "Nr5,Nr6,Nr7,Nr8";//A1,B2 
     } else 
      scoreTeamA = "Nr1,Nr2,Nr3,Nr4,Nr5,Nr6,Nr7,Nr8"; //A1 
    } else if (A == -1) { 
     scoreTeamA = "Nr9,Nr10,Nr11,Nr12,Nr13,Nr14,Nr15,Nr16"; //A2 
    } 
+0

邏輯取決於你,你希望你的代碼如何。 –

回答

2

一些浮現在腦海中的替代品:

  1. if...else語句的長鏈。

  2. switch陳述。雖然這不會比if...else好多了。

  3. 數據結構,例如Map

  4. 自定義類層次結構。通常,switch聲明可以被多態性替代。這很大程度上取決於你真正在做什麼的細節。

+0

我不明白那個代碼可能是什麼,如果想使用'map',就明白這是最好的選擇。 –

+0

@MārtiņšDoniņš我不明白你的意見 –

+0

@ Code-Apprentics我不明白如何使用'map'來實現所有這些。現有的代碼:[鏈接](https://github.com/MartinsDonins/MDProject/blob/master/app/src/main/java/lv/digitalteam/android/socionicscalculator/MainActivity.java) 也許你可以分享一個例。否則,現在我總是發現錯誤的例子。 –