我怎样才能减少这种重复? (JAVA)

时间:2016-06-06 16:53:31

标签: java

所以,在我的一个代码中有这个“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);   

}}   

2 个答案:

答案 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语句。

那或使用某种数据结构来保存所有这些idnp变量,这会大大清理代码。