我有一个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循环中,我们一次只能检查一个值。请尝试了解我在问什么。我想同时检查所有数组索引值(一次性)。
答案 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对你的情况不起作用,否则我会说明这里发布的答案。