如何在一个while循环中同时检查所有数组索引Java

时间:2013-04-22 21:00:22

标签: java arrays while-loop

我有一个5大小的数组,如果任何索引没有,我想从随机函数中赋值。

while(positionXtoStart==array1[0] || positionXtoStart==array1[1] || 
      positionXtoStart==array1[2] || positionXtoStart==array1[3] || 
      positionXtoStart==array1[4])
{    
    positionXtoStart = (rand1.nextInt(400) + 1)+30;  
}

这个解决方案对于小尺寸的阵列是可以的,但是如果我有大小为1000的数组,我不能在while循环中输入1000个条件。

我尝试使用if-else条件的For循环,但是 问题是,我想同时检查所有数组索引。

  

请尝试了解我在问什么。我想同时检查所有数组索引值(一次性)

< - >在For循环中,我们一次只能检查一个值。

4 个答案:

答案 0 :(得分:1)

如果我理解正确,你只需要遍历数组,检查每个值。

for (int i = 0; i < array1.length; i++)
{
    if (array1[i] == positionXtoStart)
    {
         positionXtoStart = (rand1.nextInt(400) + 1)+30;

         break; // exit the loop
    }
}

答案 1 :(得分:1)

你正在寻找这样的东西吗?

for(int i=0; i<array1.length; i++)
    if(array[i] == whatever)
    {
        // do stuff
    }

答案 2 :(得分:0)

如果你必须检查每个条目,你必须通过整个阵列。无序数组并不适合通过它进行搜索。也许您应该考虑将数据结构更改为BST之类的内容,以便进行保证的O(logn)搜索。

要比较无序数组中的所有元素,您需要线性时间。

答案 3 :(得分:0)

不幸的是,你所要求的是不可能的。即使在您的代码中:

while(positionXtoStart==array1[0] || positionXtoStart==array1[1] || 
  positionXtoStart==array1[2] || positionXtoStart==array1[3] || 
  positionXtoStart==array1[4])

计算机一次检查一个条件。它并没有像你想象的那样立刻完成所有条件。您发布的代码等同于@Supericy和@Samiam发布的代码。

除非有理由说forloops对你的情况不起作用,否则我会说明这里发布的答案。