我如何搜索数组以查明它是否在数组元素的特定范围内包含一组值(可能从位置2到位置7,第一个元素将是帧的开始,长度等) 它可能包含上述值的任何组合(顺序) ,或者不包含任何元素,并且如果未找到关联的元素,则应停止发送数据 我正在尝试根据接收到的元素发送一些请求的数据 更新 !! ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有2个数组。 一个是另一个大小的两倍。 array2
代表双精度对,例如, array2[0]
是下限,而array2[1]
是上限。 我想检查array1[0]
是否在值array2[0]
和array2[1]
,如果array1[1]
在值array2[2]
和array2[3]
,依此类推。 如果对于整个数组都是这种情况,我想返回true,否则返回false。
到目前为止,这是我一直在尝试的方法,但是没有用。
double[] array1 = new double[10];
double[] array2 = new double[20];
public boolean match(double[] array1, double[] array2) {
boolean b = false;
int count = 0;
for (int i = 0; i < array1.length; i++) {
if (array1[i] > array2[i * 2] && array1[i] < array2[i * 2 + 1]) {
count++;
}
}
if (count == array1.length) {
b = true;
}
return b;
}
任何帮助,将不胜感激
您的循环不正确:
for (int i = 0; i < array1.length; i++) {
if (array1[i] > array2[i * 2] && array1[i] < array2[i * 2 + 1]) {
count++;
}
}
您检查索引i*2
,当i
为4
时将得出8
。 但是,您想查看i
之前和之后的索引。 一种方法是跟踪您在哪个索引上,并使用该索引检查array2
的元素:
public static boolean match(double[] array1, double[] array2) {
boolean b = false;
int index = 0;
int count = 0;
for (int i = 0; i < array1.length; i++) {
if (array1[i] > array2[index++] && array1[i] < array2[index++]) {
count++;
}
}
if (count == array1.length) {
b = true;
}
return b;
}
使用后增量运算符,我们可以在每次调用索引时增加计数器,以便我们调用array2
的正确索引。
我们也可以通过在条件变为假时立即退出来使此方法更有效:
if (array1[i] <= array2[i * 2] || array1[i] >= array2[i * 2 + 1]) {
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.