因为我正在编写这个项目以获得乐趣,所以我不得不自己获得我想要的输出:从输入中获取正元素,2和-2。
更简单地说,我希望输出为正2而不是负2.
这样做的一般想法是将最接近的元素归零。但在这里,我假设正面的一个接近于0.
希望你们任何人都能回答我的问题。就个人而言,我希望在Java方面做得更好,这样我就可以在将来的某个时候像我一样帮助新手。无论如何,谢谢你,提前。
static int getClosestToZero(int[] array) {
int num = array[0];
int absNum = Math.abs(num);
for(int i = 1; i < array.length; ++i) {
int newAbs = Math.abs(array[i]);
if(newAbs < absNum) {
absNum = newAbs;
num = array[i];
}
}
return num;
}
public static void main(String[] args) {
int[] myArray = {-2, 2};
System.out.println(getClosestToZero(myArray));
}
答案 0 :(得分:1)
这应该有效:
static int getClosestToZero(int[] array)
{
int num = array[0];
int absNum = Math.abs(num);
for (int i = 1; i < array.length; ++i)
{
int newAbs = Math.abs(array[i]);
if (newAbs < absNum)
{
absNum = newAbs;
num = array[i];
}else if(newAbs == absNum && array[i]>=0)//if equals and the current is positive, then take it
{
num = array[i];
}
}
return num;
}
答案 1 :(得分:0)
当您检查该值是否比当前最接近的值更接近零时,只需使用Math.abs()来获取绝对值并检查它是否与当前最接近的值匹配。如果匹配,则忽略它并继续迭代。
答案 2 :(得分:0)
只需修改条件:
if (newAbs < absNum || (newAbs == absNum && array[i] > num)) {
如果有的话,将用相同的正值替换负值。