2013-04-27 24 views
1

考慮代碼:如何爲兩個變量使用開關盒?

private String mode;  // current played mode 

private void func(int row , int column) 
{ 
    // rotation mode 
    if ((row == 0 && column == 0) || (row == 2 && column == 0) || (row == 0 && column == 2) || (row == 2 && column == 2)) 
    { 
     mode = ROTATE_MODE; 
    } 

    // scaling more 
    else if ((row == 0 && column == 1) || (row == 1 && column == 0) || (row == 2 && column == 1) || (row == 1 && column == 2)) 
    { 
     mode = SCALE_MODE; 
    } 

    // translate mode 
    else if ((row == 1 && column == 1)) 
    { 
     mode = TRANSLATE_MODE; 
    } 
} 

如何使用一個開關情況下rowcolumn

+0

您是否已經檢查http://stackoverflow.com/questions/15991167/switch-case-for-two-int-variables ?它可能對你有用。 – 2013-04-27 14:24:12

回答

4

根據值的範圍,你可以用一個公式

switch(row * 10 + column) { 
    case 0, 20, 2, 22: 

     break; 
    case 1, 10, 21, 12: 

     break; 
    case 11: 

     break; 
} 
2

你可以將它們組合成一個變量。例如,如果列的最大數量爲100(0-99):

int position = row * 100 + column; 
switch (position) { 
    case 0: // row 0, col 0 
    case 200: // row 2, col 0 
    case 2: // row 0, col 2 
    case 202: // row 2, col 2 
    this.m_mode = ROTATE_MODE; 
    break; 
    ... 
} 
+0

平心而論,@Peter首先留下了他的答案。他應該得到「接受的答案」。 – 2013-04-27 14:49:04

+0

確實。謝謝 。 – 2013-04-27 14:51:58