Java 使用循环检查数组的布尔值
为循环编写Java代码,该循环将布尔变量Java 使用循环检查数组的布尔值,java,arrays,boolean,Java,Arrays,Boolean,为循环编写Java代码,该循环将布尔变量isOrdered设置为true(如果调用的给定int数组的元素是非降序的),否则将isOrdered设置为false inti[]={1,2,3,4,5}; int b=0; 布尔有序=假; 而(bi[b+1] 老实说,你可以让它工作在你如何将的顺序初始化为true和false的问题上。我会先将它初始化为true。然后,如果你在问题中发现一个带有false的谬误,那么这个想法就是打破你正在做的任何过程。请看我的例子以获得进一步的参考 迭代 boolean
isOrdered
设置为true(如果调用的给定int数组的元素是非降序的),否则将isOrdered设置为false
inti[]={1,2,3,4,5};
int b=0;
布尔有序=假;
而(b 如果(i[0]否,则仅检查数组的第一个元素是否小于或等于至少一个元素-包括第一个元素本身,它将始终等于自身,将isOrdered
设置为true
,无论其余元素是什么
提示#1:您应该将每个元素(第一个元素除外)与其前面的元素进行比较
提示#2:你应该乐观地假设数组是有序的,然后搜索反例。一旦你发现一对元素违反了顺序,就将isOrdered
设置为false并跳出循环。对数组的大小进行for循环,检查下一项是否小于当前项:
int arr[] = { 1, 2, 3, 4, 5 };
int b = 0;
boolean isOrdered = true;
for (int i = 0; i< arr.length - 1 ; i ++) {
if (arr[i] > arr[i+1])
{
isOrdered = false;
break;
}
b++;
}
out.println(isOrdered);
intarr[]={1,2,3,4,5};
int b=0;
布尔同序=真;
对于(int i=0;iarr[i+1])
{
无序=错误;
打破
}
b++;
}
out.println(按顺序排列);
让我们看看有什么问题
if (i[0] <= i[b])
您理解正确了吗?您真正需要的是检查b之后的下一个值。
所以代码看起来像i[b]>i[b+1]
老实说,你可以让它工作在你如何将的顺序初始化为true和false的问题上。我会先将它初始化为true。然后,如果你在问题中发现一个带有false的谬误,那么这个想法就是打破你正在做的任何过程。
请看我的例子以获得进一步的参考
迭代
boolean isOrdered = true;
while(isOrdered && array.length - 1 > b){
if(array[b] > array[b+1]) isOrdered = false;
b++;
}
boolean isOrdered(int[] array, index){
if(index == array.length - 1) return true;
if(array[index] > array[index + 1]) return false;
return isOrdered(array, index + 1);
}
递归的
boolean isOrdered = true;
while(isOrdered && array.length - 1 > b){
if(array[b] > array[b+1]) isOrdered = false;
b++;
}
boolean isOrdered(int[] array, index){
if(index == array.length - 1) return true;
if(array[index] > array[index + 1]) return false;
return isOrdered(array, index + 1);
}
这方面的递归方法是waaaaay cooler。if(i[0]基于一次比较,如所说的isOrdered=true
。这与所说的“如果排序不正确,则第0位和第b位的这对元素的排序正确”相同这是一个很好的例子,说明了一个有重点的、写得很好的问题。提示#2的原因不仅仅是一个优化。在问题的版本中,如果任何一个比较成功,结果都是正确的,但我想你只希望所有比较都成功,结果才是正确的。我的意思是“乐观”“先假设一个积极的结果,然后尝试寻找反例”;这与优化无关。这实际上不是一个递归解决方案,而是一个替代的迭代解决方案。尽管如此,我还是很喜欢。@AndyPerfect刚刚添加了一个递归解,OP要求迭代解决方案,所以我先做了:)isOrdered==true
可以是isOrdered
@Marcelo我总是被=
赶上,我总是忘了。更新了好的捕获。你是说如果(arr[I]>arr[I+1])
@Marcelo你是对的。在下降之前没有看到“不是”