0
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

4 回答 4

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 个案例,那么有一个论点说简单的开关是最好的,因为它就是这样,简单。

我没有内联切换的原因是为了使该方法更易于单元测试而无需进入循环,这意味着每个案例都可以单独测试,并且当您更改它时,您不必担心意外修改循环代码......它更整洁

于 2012-04-13T12:18:51.410 回答
1

尝试使用开关功能。

for(int i=0; 我

switch(i) { case 1: break;

//很快。}

}

于 2012-04-13T12:09:59.807 回答
0

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

   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;

        }
于 2012-04-13T12:17:39.540 回答
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 
   }
于 2012-04-13T12:35:27.350 回答