[英]Searching an array for a sequence of increasing integers
这是任务:
创建一个程序,该程序查看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
有很多方法可以完成这项任务。 我在下面提供了一个工作分步解决方案。
解决方案
首先,应用给定的信息(下限、上限、数组大小)。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.