这是任务:
创建一个程序,查看200
- 随机生成的整数元素数组,其值介于25
和225
之间。该程序应查找包含非递减值的n
个连续索引 - 例如:
28, 57, 88, 153, 201
被视为成功
28, 57, 32, 153, 201
被视为失败。
输出应该类似于:
An increasing consecutive run of 5 elements found at:
Index 41 contains 28
Index 42 contains 57
Index 43 contains 88
Index 44 contains 153
Index 45 contains 201
有很多方法可以完成这项任务。 我在下面提供了一个有效的分步解决方案。
答案 0 :(得分:0)
解
首先,应用给定的信息(下限,上限,数组大小)。
int min = 25;
int max = 225;
int set[] = new int[200];
将n
设置为任意值。我将使用5作为演示目的。
int n = 5;
创建一个counter
变量来记录找到的连续整数的数量。此外,每当一系列数字不起作用时,我们将添加逻辑以重置计数器。
int counter = 0;
开始迭代。创建一个for
循环,用指定边界之间的'200'元素填充数组。
for(int i = 0; i < set.length; i++){
set[i] = (int)(Math.random() * (max - min + 1) + min);
打印出每个索引的内容。
System.out.println((i + 1) +") " + "Index " + i + " contains " + set[i]);
第一个if
语句:每次序列符合模式时,这将使'counter'递增1,但在比较失败时将其重置为0。
if(i > 0){
if(set[i] >= set[i-1]){counter++;}
else{counter = 0;}
}// End if
现在创建一个while语句,当counter
的值等于n
的值时激活该语句。这将打印出语句An increasing consecutive run of 5 elements found at:
,然后导致for循环。
while(counter == n){
System.out.println("An increasing consecutive run of " + n + " elements found at:");
现在设置此循环以简单地打印出成功的n
行。
for(int j = i - n; j < i; j++){
System.out.println("Index " + j + " contains " + set[j]);
} //End for
告知代码在满足所有条件后停止运行。
return;
只需关闭while和for循环,程序就完成了。
} //End while
} //End for