gpt4 book ai didi

java - 为什么这个方法不返回true?

转载 作者:行者123 更新时间:2023-12-02 01:40:18 25 4
gpt4 key购买 nike

我有以下任务要做:编写一个方法,获取一个数组作为参数和一个 int 数字。如果数组中两个数字之间存在差异且其差异大于数字变量值,则该方法返回 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(firstNum)-(Math.abs(a[i])

必须是

Math.abs(firstNum - a[i])

您应该获得差异的abs,而不是每个数字。

但是,你正在做的是abs(3) - abs(4) = -1,它小于0。(其他人也类似)

[...]if there is a difference between 2 numbers in the array that its difference is bigger than the number variable value

但是您只是将第一个数字相互比较......

如果您需要查找是否存在两个数字,使得它们之间的差异大于传递的整数,请找到最小值和最大值并找到它们之间的差异(感谢@NeplatnyUdaj 纠正我)

关于java - 为什么这个方法不返回true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54537743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com