Java:使函数返回正整数而不是负整数

时间:2014-10-27 14:10:40

标签: java arrays math integer

因为我正在编写这个项目以获得乐趣,所以我不得不自己获得我想要的输出:从输入中获取正元素,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));
        }

3 个答案:

答案 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)) {
如果有的话,

将用相同的正值替换负值。