Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
当我为这个项目编写代码很有趣时,我迷上了要获取所需输出的过程:从输入2和-2中获取正数元素。
简而言之,我希望输出是正2而不是负2。
一般的想法是使最接近的元素为零。但是在这里,我假设正数接近0。
希望你们中的任何人都能回答我的问题。我个人想提高Java的水平,以便现在或以后可以像我一样帮助新手。无论如何,谢谢你。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
当我为这个项目编写代码很有趣时,我迷上了要获取所需输出的过程:从输入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));
}
最佳答案
这应该工作:
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;
}
10-06 15:38