我无法弄清楚如何证明存在是否真实;
static boolean existsx(double p1x, double p2x,double[] varray) {
boolean foundx = false;
int i;
//System.out.println(varray.length);
for (double v : varray){
if ( varray[i] > p1x && v < p2x) {
foundx = true;
//System.out.println(x+" was found to be between"+p1x+" and "+p2x);
break;
}
else {
foundx = false;
}
}
return foundx;
}
我正在尝试检查p1x和p2x之间数组中是否存在数字。如果是,则返回true,否则返回false。
答案 0 :(得分:5)
您尝试使用增强型for
循环和“正常”for
循环的混合。此外,你正在通过篮球避免多次退出。我把它重写为:
static boolean existsx(double p1x, double p2x, double[] varray) {
for (double v : varray){
if (v > p1x && v < p2x) {
return true;
}
}
return false;
}
(请注意,目前*不包括p1x
和p2x
;您可能希望至少包含一个包含,具体取决于您的需要。重命名参数和方法也不会受到影响。 )
答案 1 :(得分:3)
我认为你有一些逻辑问题,声明变量i
而没有初始化它就是其中之一。
以下代码应该告诉您给定数组中的一个数字是否介于这两个数字之间:
static boolean existsx(double p1x, double p2x,double[] varray){
double upperBound = Math.max(p1x, p2x);
double lowerBound = Math.min(p1x, p2x);
for (double number : varray)
{
if ( (number <= upperBound) && (number >= lowerBound))
{
return true;
}
}
return false;
}
答案 2 :(得分:0)
public static boolean exists(double p1, double p2, double[] varray)
{
for(double v : varray)
if(v >= p1 && v <= p2) return true;
return false;
}
答案 3 :(得分:0)
您也可以使用SortedSet(如果您需要经常查找并且varray很大,那么创建它一次会更快):
import java.util.SortedSet;
import java.util.TreeSet;
public class TestSortedSet {
public static void main(String[] args) {
double p1 = 2;
double p2 = 4;
double[] varray = { 3.0 };
TreeSet<Double> set = new TreeSet<Double>();
for(double d : varray) {
set.add(d);
}
SortedSet<Double> between = set.subSet(p1, p2);
System.out.printf("%s number(s) between %s and %s: %s", between.size(), p1, p2, between);
}
}