2014-10-27 2 views
0

Поскольку я кодировал этот проект для удовольствия, я застрял на получении результата, который я хочу: получив положительный элемент из ввода, 2 и -2.Java: сделать функцию return положительное целое, а не отрицательное

Выражаясь более просто, я хочу выход быть положительным-не отрицательный 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' be' num = newAbs; '? – Maroun

+0

Должно быть> =, not <..... line 6 – ha9u63ar

+0

@MarounMaroun Огромное спасибо вам обоим! – DreamInCode

ответ

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. –

0

Просто измените условие:

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

он заменит отрицательное значение с же положительным, если есть.

Смежные вопросы