[英]How to use for loops with a boolean array to simulate coin flip?
[英]Boolean with loops to check an array
如果給定的int數組的元素的順序為非降序,請為將布爾變量isOrdered
為true的循環編寫Java代碼,否則將isOrdered設置為false。
int i[] = { 1, 2, 3, 4, 5 };
int b = 0;
boolean isOrdered = false;
while (b < i.length) {
if (i[0] <= i[b]) {
isOrdered = true;
}
b++;
}
out.println(isOrdered);
我這樣做正確嗎?
讓我們看看有什么問題。
if (i[0] <= i[b])
這是困擾您代碼的主要方面。 您如何檢查下一個值是否比i[b]
高/低,您僅將索引0的值與索引b的值進行比較!
本質上,您的代碼看起來像是在循環中。
/ w int i[] = { 1, 2, 3, 4, 5 };
i[0] i[b]
1 1
1 2
1 3
...
你看對圖片嗎? 您真正需要的是檢查b.
之后的下一個值b.
因此代碼看起來像i[b] > i[b+1]
老實說,您可能可以使它對如何將isOrdered
的順序初始化為true和false isOrdered
。 我首先將其初始化為true。 然后的想法是,如果您在問題中發現一個帶有false.
的謬論,那就擺脫您正在做的任何事情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);
}
遞歸方法是waaaaaaaaaay cooler。
沒有; 您只是在檢查數組的第一個元素是否小於或等於至少一個元素-包括第一個元素本身(將始終等於其自身),無論其余元素是什么,都將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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.