java Array:如何在java中处理数组条件

时间:2012-04-13 12:07:12

标签: java arrays loops for-loop

int Cnt = 4;

for(int i=0; i<Cnt; i++)  {
}

在这个循环中,我想根据i的值做出不同的决定。

那么最好的方法是什么?

我应该使用以下方式??

for(int i=0; i<Cnt; i++) {
    if (i==0) {
        // some code 
    }
    else if(i==1) {
    // some code 
    }
}

或者这样看起来会不错?

for (int i=0; i<Cnt; i++) {
    String str = Bag[0].value ;
    String str22 = Bag[1].value     
}

我想问的是,我怎么知道数组的最大长度是多少?

这样做最不容易出错的方法是什么?

4 个答案:

答案 0 :(得分:3)

好的我还提倡使用某种切换功能,并按如下方式构建我的代码

public void fooOperation(int[] numbers) {
    for(int i=0; i < numbers.length; i++) { 
        handleValue(i);
    }
}

public void handleValue(int value)  {
    switch(i) {
        case 1:
            // some code
            break;
        case 2:
            // some code
           break;
        default:
            break;
    }
}

还有一点值得注意的是,如果这个switch语句变得非常大,它不是最好的解决方案,你可以使用策略模式来避免这样的代码。然而,它依赖于数组中的内容,int可能表示其他内容(例如枚举值的值),此时您可以转换为强类型的大小写并具有该大小写的行为。这个问题是软件工程的问题,实际上取决于收到的范围。如果你只有3个案例,那么有一个论点说简单的开关是最好的,因为它只是那个,简单。

我没有完成内联开关的原因是为了使该方法更容易进行单元测试而不进入循环意味着每个案例都可以单独测试,当你更改它时,你不必担心意外修改循环代码...... 更整洁

答案 1 :(得分:1)

尝试使用切换功能。

  

for(int i = 0; i      

切换(i){案例1:休息;

     

//等等。 }

     

}

答案 2 :(得分:0)

Switch case最适合此要求。当您检查的条件超过3个时,您可以进行切换。

   switch (i) {
            case 0:
                System.out.println("i value"+i);

                break;
            case 1:
                System.out.println("i value"+i);

                break;
            case 2:
                System.out.println("i value"+i);

                break;
            case 3:
                System.out.println("i value"+i);

                break;
            case 4:
                System.out.println("i value"+i);

                break;

        }

答案 3 :(得分:0)

你必须使用switch case因为..

1:- Cleaner code. Code with multiple chained if/else if ... looks messy and is 
difficult to maintain - switch gives    cleaner structure.

条件评估一次
  足够灵活,可以像Duff的设备一样构建   以及执行得更快(通过跳转/查找表)*历史性

例如:

 switch (i){  
     case 1:
       // do something
       break;
     case 2:
       // do something
       break;
     case 3:
       // do something
       break;

    // and more...

     default:
       // do something 
   }