2016-07-22 66 views
0

有没有更简单的方法来重写这个循环?代码少的东西。 任何帮助表示赞赏。简单的方法来重写这个循环

 for(int i=0; i< 50; i++){ 
     if(i>=0 && i<10){ 
      method(arr[0]); 
     } 
     if(i>=10 && i<20){ 
     method(arr[1]); 
     } 
     if(i>=20 && i<30){ 
     method(arr[2]); 
     } 
     if(i>=30 && i<40){ 
     method(arr[3]); 
     } 
     if(i>=40 && i<50){ 
     method(arr[4]); 
     } 

    } 
+2

这个问题会更适合[codereview.stackexchange。 com](http://codereview.stackexchange.com/) –

+0

查找表? –

+0

什么是语言? – osgx

回答

0

使用else

for (i=0; i<50: i++) { 
    if (i<10) { 
    method(arr[0]); 
    } else if (i<20) { 
    method(arr[1]); 
    } else if (i<30) { 
    method(arr[2]); 
    } else if (i<40) { 
    method(arr[3]); 
    } else { 
    method(arr[4]); 
    } 
} 

对于一个班轮你可以使用短的if语句。凡FALSE检查的其他条件

for (i=0; i<50: i++) { 
    (condition) ? TRUE : FALSE 
} 
+0

为什么不使用模式匹配? – osgx

1

我可能会使用模块化的功能和计数器重写。这应该有助于显着减少代码。

int index; 
int count = 0; 
for(int i=0; i< 50; i++){ 
    index = i%10; 
    if(index==0){ 
     count++; 
    } 
    method(arr[count-1]); 
} 
1
for (int i = 0; i < arr.length; i++) { 
    for (int j = 0; j < 10; j++) { 
     method(arr[i]); 
    } 
} 

你可以使用的功能,以增加可读性:

for (int i = 0; i < arr.length; i++) { 
    method10(arr[i]); 
} 
+0

我只是写这第一段代码。我不喜欢你的'功能'。 – xenteros

2

你可以使用这种方法:

for(int i = 0; i < 50; i++){ 
    int index = i == 0 ? 0 : (int)Math.floor(i/10); 
    method(arr[index]); 
}