2011-01-21 147 views
3

只要好奇它是否可能。 考虑follwing代码:只在循环中运行if语句

boolean firstRow = true; 

while{row = result.next()) 
{ 
    if(firstRow) 
    { 
     firstRow = false; 
     //do some setup 
    } 

    //do stuff 
} 

它的伪代码和问题一般不是某些特定的编程语言。

我的问题:是否可以编写完全相同的代码,但不使用其他变量(本例中为“firstRow”)。在FOR循环中,可以检查计数器变量值,但让FOR循环出这个问题。

回答

4

是的,在开始循环之前进行设置并将其更改为do..while。例如:

if (row = result.next()) { 
    //do some setup 
    do { 
    //do stuff 
    } while (row = result.next()); 
} 
+0

如果可能,我想在循环内做到这一点。 – Keios 2011-01-21 13:49:21

0
if(row = result.next()) 
{ 
    //do some setup 
    while(row) 
    { 
     //do stuff 
     row = result.next(); 
    } 
} 
0

嗯,有一些选择。首先是将“设置”代码移到循环外部。如果你不关心这会导致设置发生,即使你永远不会迭代,这可能是最好的选择。如果你关心,你可以添加循环条件到if检查。

if(row = result.next()) 
{ 
    //do some setup 
} 
for (;row;row=result.next()) 
{ 
    //do stuff 
} 

另一种方法是让循环尽可能简单,并相信编译器的优化器会执行上述“展开”操作。如果您将优化选项设置得足够高,它可能会。