2014-10-27 87 views
0

當我編寫這個項目的樂趣時,我陷入了我想要的輸出結果:獲取輸入中的正數元素,2和-2。Java:使函數返回正整數不爲負1

要說得簡單些,我希望輸出爲正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

不應該在'if'爲'num = newAbs;'?的最後一行。 – Maroun 2014-10-27 14:15:09

+0

應該> =,而不是<..... line 6 – ha9u63ar 2014-10-27 14:15:40

+0

@MarounMaroun巨大的感謝你們倆! – DreamInCode 2014-10-27 14:18:00

回答

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; 
} 
0

當你檢查,如果該值大於當前最接近的值越接近零,只需使用Math.abs(),使得到的絕對值並檢查它是否符合當前最接近的一次。如果它們匹配,則忽略它並繼續迭代。

+0

這正是OP當前代碼所做的。 – 2014-10-27 14:18:59

0

只需修改條件:

if (newAbs < absNum || (newAbs == absNum && array[i] > num)) { 

如果有任何它將與相同正取代負值。