所以,在我的一个代码中有这个“do while”语句,正如你所看到的,我不断重复if语句。我怎样才能减少它? 我是新手,我无法解决这个问题。
do {
if (id1 <= 15) {
np++;
}if(id2<=15){
np++;}
if(id3<=15){
np++;}
if(id4<=15){
np++;}
if(id5<=15){
np++;}
if(id6<=15){
np++;}
if(id7<=15){
np++;}
if(id8<=15){
np++;}
if ((id1>=16)&&(id1<=30)){
np2++;}
if ((id2>=16)&&(id2<=30)){
np2++;}
if ((id3>=16)&&(id3<=30)){
np2++;}
if ((id4>=16)&&(id4<=30)){
np2++;}
if ((id5>=16)&&(id5<=30)){
np2++;}
if ((id6>=16)&&(id6<=30)){
np2++;}
if ((id7>16)&&(id7<30)){
np2++;}
if ((id8>16)&&(id8<30)){
np2++;}
if ((id1 >= 31)&&(id1<=45)){
np3++;}
if ((id2 >= 31)&&(id2<=45)){
np3++;}
if ((id3 >= 31)&&(id3<=45)){
np3++;}
if ((id4 >= 31)&&(id4<=45)){
np3++;}
if ((id5 >= 31)&&(id5<=45)){
np3++;}
if ((id6 >= 31)&&(id6<=45)){
np3++;}
if ((id7 >= 31)&&(id7<=45)){
np3++;}
if ((id8>=31)&&(id8<=45)){
np3++;}
if ((id1>=46)&&(id1<=60)){
np4++;}
if ((id2>=46)&&(id2<=60)){
np4++;}
if ((id3>=46)&&(id3<=60)){
np4++;}
if ((id4>=46)&&(id4<=60)){
np4++; }
if ((id5>=46)&&(id5<=60)){
np4++;}
if ((id6>=46)&&(id6<=60)){
np4++; }
if ((id7>=46)&&(id7<=60)){
np4++;}
if ((id8>=46)&&(id8<=60)){
np4++;}
if (id1>60){
np5++;}
if (id2>60){
np5++;}
if (id3>60){
np5++;}
if (id4>60){
np5++;}
if (id5>60){
np5++;}
if (id6>60){
np5++;}
if (id7>60){
np5++;}
if (id8>60){
np5++;}
p=np+np2+np3+np4+np5;
}while(p==0);
}}
答案 0 :(得分:2)
减少该代码的最简单方法是将8个单独的id
变量转换为8的数组。这样的事情:
int[] ids = new int[8];
// code to assign ids here
int np = 0, np2 = 0, np3 = 0, np4 = 0, np5 = 0;
do {
for (int id : ids)
if (id <= 15)
np++;
else if (id <= 30)
np2++;
else if (id <= 45)
np3++;
else if (id <= 60)
np4++;
else
np5++;
} while (np + np2 + np3 + np4 + np5 == 0);
当然代码没有意义,因为内部循环的每次迭代都会增加np
个变量之一,所以外部循环的每次迭代都会将它们的总和增加8,这意味着总和在外循环的第一次迭代结束时永远不会是0
。
希望您的代码减少其他内容,以便它对您有意义。否则,comment by Dilettant是正确的:这个答案正在帮助你“向错误的方向前进”。如果您描述真正的问题,我们可能会指导您朝着正确的方向发展。
答案 1 :(得分:0)
将8 ids
放入数组中。然后循环遍历ids
,在每次迭代期间对它们执行相同的几个if
语句。
那或使用某种数据结构来保存所有这些id
和np
变量,这会大大清理代码。