Java 如果这些变量中的任何一个等于这个,相应的变量就会这样做。如何编写此代码?
如果这个问题被重复,很抱歉,我找不到答案。 我的问题是如何编码“如果这些变量中的任何一个等于这个”,并将其更改为对应于该变量的新值。例如,我正在尝试进行HTML转换: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
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的开关语句?(字符串是不可变的,因此必须在函数返回时更新变量)