0

如果这个问题被重复,我很抱歉,但我找不到答案。我的问题是如何为“如果这些变量中的任何一个等于这个”进行编码并将其更改为与该变量对应的新值。例如,我正在尝试进行 HTML 转换:

        int hex1 = (int)(Math.floor((work[j][k]) / 1048576)) % 16;
        int hex2 = (int)(Math.floor((work[j][k]) / 65536)) % 16;
        int hex3 = (int)(Math.floor((work[j][k]) / 4096)) % 16;
        int hex4 = (int)(Math.floor((work[j][k]) / 256)) % 16;
        int hex5 = (int)(Math.floor((work[j][k]) / 16)) % 16;
        int hex6 = (int)(work[j][k]) % 16;

以上将是我的多个变量列表。所以伪代码将是“如果上述任何变量等于这个”。因此,如果 hex1、hex2、hex3、hex4、hex5、hex6 中的任何一个等于,比如 10。那么相应的变量就会做一些事情。例如:

         String html = "";
           if (hex1==10){
              html += "A";
           }
           else if (hex1==11){
              html += "B";
           }
           else if (hex1 >= 0 && hex1 <=9){
              html += hex1;
           }
        html = "#" + html;

有没有办法在上面的代码中执行此操作,而不必每次使用不同的变量复制/粘贴代码 6 次不同的时间(即 hex1 将是 hex2、hex3、...)?

4

3 回答 3

0

是的,您正在寻找地图。在您的情况下使用 a Map<Integer, String>。然后你可以这样做:

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(10, "A");
map.put(11, "B");
String str = map.get(hex5);
if (str != null)
{
    html += str;
}

请使用数组,而不是hex1, hex2, hex3,hex4等...创建一个简单的:

int[] hex = new int[6];

接下来,您可以将这些行优化为如下所示:

int hex5 = (int)(Math.floor((work[j][k]) / 16)) % 16;

将会:

int hex5 = (work[j][k] >> 4) & 0xF;

work[j][k]假设是一个整数,这要快得多。

于 2013-10-29T19:38:11.163 回答
0

尝试这样的事情:

int[] hex = new int[6];

//code to fill in hex digits

for(int i = 0; i < hex.length;i++){
    if(hex[i]==10){
        //do stuff
    }else if(hex[i]==11){
        //do stuff
    }
   //other conditions

}

编辑:或者您可以使用一个列表来包含任意数量的十六进制数字,如下所示:

List<Integer> hexList = new ArrayList<Integer>();

//code to add hex digits to list

if(hexList.contains(10)){
//do stuff
}else if(hexList.contains(11)){
//do stuff
}
//other conditions
于 2013-10-29T19:38:26.913 回答
0

您可以创建一个函数并使用不同的变量值调用它:

void doSomething(int in){
 // put your logic here
}

doSomething(hex1);
doSomething(hex2);

等等...

于 2013-10-29T19:37:28.223 回答