【发布时间】:2019-06-29 11:14:57
【问题描述】:
我有以下任务要做: 编写一个方法,获取一个数组作为参数和一个 int 数。 如果数组中的 2 个数字之间的差异大于数字变量值,则该方法返回 true。 请注意,您只能循环数组一次。 所以我写道:
public class difference
{
public boolean difference(int[] a, int x)
{
int firstNum=a[0];//3
boolean answer=false;
for (int i=1;i<a.length;i++)
{
if (Math.abs(firstNum)-(Math.abs(a[i]))>Math.abs(x)) {
answer=true;
break;
}
}
return answer;
}
public static void main(String[]args)
{
difference test= new difference();
int[] array={3,4,6};
System.out.println(test.difference(array,0));
}
}
但由于某种原因,这将我打印为 false 而不是 true 为什么?
【问题讨论】:
-
您的主要问题是您在每个数字上使用
Math.abs而不是在差异上,因此您正在与负数进行比较。但无论如何该算法都是错误的,因为您需要检查所有数字之间的差异,而不仅仅是首先检查。问题的正确解决方案可能是在数组中找到最大和最小的数字,它们的差将是数组中的最大差。
标签: java arrays methods boolean logic