Сделать отрицательное число положительным

У меня есть метод Java, в котором я суммирую набор чисел. Тем не менее, я хочу, чтобы любые отрицательные числа обрабатывались как положительные. Итак, (1) + (2) + (1) + (- 1) должно равняться 5.

Я уверен, что есть очень простой способ сделать это - я просто не знаю, как это сделать.

Ответ 1

Просто позвоните Math.abs. Например:

int x = Math.abs(-5);

который установит x в 5.

Ответ 2

Описание, которое вы описываете, называется "абсолютным значением", а Java имеет функцию Math.abs, чтобы сделать это за вас. Или вы можете избежать вызова функции и сделать это самостоятельно:

number = (number < 0 ? -number : number);

или

if (number < 0)
    number = -number;

Ответ 3

Вы ищете абсолютную ценность, приятель. Math.abs(-5) возвращает 5...

Ответ 4

Используйте функцию abs:

int sum=0;
for(Integer i : container)
  sum+=Math.abs(i);

Ответ 5

Этот код не является безопасным для быть вызван положительными числами.

int x = -20
int y = x + (2*(-1*x));
// Therefore y = -20 + (40) = 20

Ответ 6

Вы спрашиваете об абсолютных значениях?

Math.abs(...) - это функция, которую вы, вероятно, захотите.

Ответ 7

Вы хотите обернуть каждое число в Math.abs(). например.

System.out.println(Math.abs(-1));

выводит "1".

Если вы хотите избежать записи Math. -part, вы можете включить Math-утилиту статически. Просто напишите

import static java.lang.Math.abs;

вместе с вашим импортом, и вы можете ссылаться на abs() -функцию, просто написав

System.out.println(abs(-1));

Ответ 8

Попробуйте это (минус перед x действителен, так как это унарный оператор, узнайте больше здесь):

int answer = -x;

При этом вы можете превратить положительное в отрицательное и отрицательное в положительное.


Однако, если вы хотите, чтобы только отрицательное число было положительным, попробуйте следующее:

int answer = Math.abs(x);

ИЛИ, если вы по какой-либо причине предпочитаете не использовать метод abs(), попробуйте следующее:

int answer = Math.sqrt(Math.pow(x, 2));

Надеюсь, поможет! Удачи!

Ответ 9

Самый простой, если подробный способ сделать это - обернуть каждое число в вызове Math.abs(), чтобы вы добавили:

Math.abs(1) + Math.abs(2) + Math.abs(1) + Math.abs(-1)

с логическими изменениями, чтобы отразить, как структурирован ваш код. Возможно, подробный, но он делает то, что вы хотите.

Ответ 10

Когда вам нужно представить значение без понятия потери или отсутствия (отрицательное значение), которое называется "абсолютное значение".


Логика получения абсолютного значения очень проста: "If it positive, maintain it. If it negative, negate it".


Это означает, что ваша логика и код должны работать следующим образом:

//If value is negative...
if ( value < 0 ) {
  //...negate it (make it a negative negative-value, thus a positive value).
  value = negate(value);
}

Есть два способа уменьшить значение:

  • Иными словами, отрицая это значение: value = (-value);
  • Умножая его на "100% отрицательный" или "-1": value = value * (-1);

Оба являются фактически двумя сторонами одной и той же монеты. Просто вы обычно не помните, что value = (-value); на самом деле value = 1 * (-value);.


Хорошо, что касается того, как вы на самом деле делаете это в Java, это очень просто, потому что Java уже предоставляет функцию для этого в Math class: value = Math.abs(value);

Да, делать это без Math.abs() - это всего лишь строка кода с очень простой математикой, но почему ваш код выглядит уродливым? Просто используйте Java при условии Math.abs()! Они обеспечивают это по какой-то причине!

Если вам абсолютно необходимо пропустить функцию, вы можете использовать value = (value < 0) ? (-value) : value;, что является просто более компактной версией кода, упомянутого в разделе логики (3), используя Тернарный оператор (? :).


Кроме того, могут быть ситуации, когда вы хотите всегда представлять потерю или отсутствие в функции, которая может принимать как положительные, так и отрицательные значения.

Вместо выполнения сложной проверки вы можете просто получить абсолютное значение и отрицать его: negativeValue = (-Math.abs(value));


Имея это в виду и рассматривая случай с суммой нескольких чисел, таких как ваш, было бы неплохо реализовать функцию:

int getSumOfAllAbsolutes(int[] values){
  int total = 0;
  for(int i=0; i<values.lenght; i++){
    total += Math.abs(values[i]);
  }
  return total;
}

В зависимости от вероятности того, что вам может понадобиться связанный код снова, также может быть хорошей идеей добавить их в свою собственную библиотеку "utils", сначала разбив такие функции на свои основные компоненты и сохранив конечную функцию просто как гнездо вызовов функций теперь разделенных основных компонентов:

int[] makeAllAbsolute(int[] values){
  //@TIP: You can also make a reference-based version of this function, so that allocating 'absolutes[]' is not needed, thus optimizing.
  int[] absolutes = values.clone();
  for(int i=0; i<values.lenght; i++){
    absolutes[i] = Math.abs(values[i]);
  }
  return absolutes;
}

int getSumOfAllValues(int[] values){
  int total = 0;
  for(int i=0; i<values.lenght; i++){
    total += values[i];
  }
return total;
}

int getSumOfAllAbsolutes(int[] values){
  return getSumOfAllValues(makeAllAbsolute(values));
}

Ответ 11

Почему бы вам не multiply that number with -1?

Как это:

//Given x as the number, if x is less than 0, return 0 - x, otherwise return x:
return (x <= 0.0F) ? 0.0F - x : x;

Ответ 12

Я бы порекомендовал следующие решения:

без веселья

    value = (value*value)/value

с lib fun:

   value = Math.abs(value);

Ответ 13

String s = "-1139627840";
BigInteger bg1 = new BigInteger(s);
System.out.println(bg1.abs());

В качестве альтернативы:

int i = -123;
System.out.println(Math.abs(i));

Ответ 14

Если вас интересует механика двух дополнений, здесь абсолютно неэффективный, но иллюстративный способ низкого уровня:

private static int makeAbsolute(int number){
     if(number >=0){
        return number;
     } else{
        return (~number)+1;
     }
}

Ответ 15

Библиотечная функция Math.abs() может быть использована.
Math.abs() возвращает абсолютное значение аргумента

  • если аргумент отрицательный, он возвращает отрицание аргумента.
  • если аргумент положительный, он возвращает число как есть.

например:

  1. int x=-5;
    System.out.println(Math.abs(x));

Выход: 5

  1. int y=6;
    System.out.println(Math.abs(y));

Выход: 6

Ответ 16

Мне понадобилось абсолютное значение long, и он глубоко заглянул в Math.abs и обнаружил, что если мой аргумент меньше LONG.MIN_VAL, который есть -9223372036854775808l, то функция abs не вернет абсолютное значение, а только минимальное значение стоимость. В этом случае, если ваш код использует это значение abs, тогда может возникнуть проблема.

Ответ 17

Можете ли вы попробовать это?

public static int toPositive(int number) {
    return number & 0x7fffffff;
}

Ответ 18

Не делайте этого

number = (число < 0? -number: number);

или

if (число < 0) number = -number;

это будет ошибкой при запуске ошибки поиска на вашем коде, она сообщит об этом как RV_NEGATING_RESULT_OF