2013-04-27 20 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