2013-04-24 86 views
0

我有一个名为e的数组,该数组包含对象,但不包含在每个索引中。所以我使用for-loop来查找包含对象的数组中的第一个索引。我通过查找不为null的值来实现此目的。如果我找到它,我将索引保存在一个名为index的变量中,并跳出循环。如果没有找到没有空值的索引,我想从方法返回。否则,我想继续并使用包含数组索引的变量索引。查找数组中没有空值的索引

int index; 

for (int i = 0; i < e.length; i++) { 
    if (e[i] != null) { 
     index = i; 
     break; 
    } 
} 

// if index did not get any value inside the for-loop, return 

// And here I use the index that was found using the for-loop 

我如何检查是否变量指数从for循环得到了一个新的指数?

谢谢!

+0

添加一个布尔变量和设置在你休息之前它是真实的。 – nhahtdh 2013-04-24 15:04:40

回答

1

添加一个布尔标志,在循环之前将其初始化为false,并且只在带有break语句的if块中将其设置为true。循环后检查标志的值。

7

这是始终初始化变量的一个原因。如果您初始化,您可以做的事情与值(和避免不必要的布尔标志)

int index = -1; 

for (int i = 0; i < e.length; i++) { 
    if (e[i] != null) { 
     index = i; 
     break; 
    } 
} 

if (index == -1) return; 
+0

这是一个更简洁的版本,如果Ivaylow的解决方案,并且不需要额外的布尔标志 - 负索引值表示没有找到值。 – RainbowFish 2013-04-24 15:06:53

+0

我没有选择这个选项,就像你在一行中有几个这样的循环一样,你不会有索引值没有改变的效果。但我同意,如果有一个单一的循环,应该这样做。 – 2013-04-24 15:08:22

+0

@IvayloStrandjev您的解决方案当然没有错,但我认为在这种特定情况下这更清晰。显然这取决于你的确切情况。 – durron597 2013-04-24 15:09:38

0

默认为-1,则检查索引如果> -1

int index = -1; 

for (int i = 0; i < e.length; i++) { 
    if (e[i] != null) { 
     index = i; 
     break; 
    } 
} 

if (index >= 0) { 


}