Java 如果这些变量中的任何一个等于这个,相应的变量就会这样做。如何编写此代码?

Java 如果这些变量中的任何一个等于这个,相应的变量就会这样做。如何编写此代码?,java,variables,loops,optimization,Java,Variables,Loops,Optimization,如果这个问题被重复,很抱歉,我找不到答案。 我的问题是如何编码“如果这些变量中的任何一个等于这个”,并将其更改为对应于该变量的新值。例如,我正在尝试进行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.floo

如果这个问题被重复,很抱歉,我找不到答案。 我的问题是如何编码“如果这些变量中的任何一个等于这个”,并将其更改为对应于该变量的新值。例如,我正在尝试进行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;
String html=”“;
如果(hex1==10){
html+=“A”;
}
else if(hex1==11){
html+=“B”;
}

否则,如果(hex1>=0&&hex1您可以创建一个函数,并使用不同的变量值调用该函数:

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

doSomething(hex1);
doSomething(hex2);

等等…

是的,您正在寻找地图。在您的情况下使用
地图。然后您可以执行以下操作:

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;
}

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

int hex5 = (int)(Math.floor((work[j][k]) / 16)) % 16;
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

}
将是:

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

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

尝试以下方法:

int hex5 = (int)(Math.floor((work[j][k]) / 16)) % 16;
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

}
int[]十六进制=新的int[6];
//用十六进制数字填充的代码
对于(int i=0;i
编辑: 也可以使用列表包含任意数量的十六进制数字,如下所示:

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
List hexList=new ArrayList();
//将十六进制数字添加到列表的代码
if(hexList.contains(10)){
//做事
}else if(hexList.contains(11)){
//做事
}
//其他条件

看起来你知道数组是什么,因为你在代码中使用了一个数组。因此,也许你可以利用这些知识来回答你的最后一个问题?当然,看看,我看不出代码和伪代码在这里匹配……假设你有一个通用的问题求解器,然后你将每个问题的原因映射到某个位置。然后你可以使用原因和位置来替代行为,如多态开关。因此,如
var=applyMath(var,)
,其中applyMath只是一个返回修改后的var的开关语句?(字符串是不可变的,因此必须在函数返回时更新变量)