문제

나는 숫자 세트를 합산하는 Java 방법이 있습니다. 그러나, 나는 긍정적 인 것으로 취급되기를 원합니다. 따라서 (1)+(2)+(1)+(-1)는 5와 같아야합니다.

나는 이것을하는 매우 쉬운 방법이 있다고 확신합니다 - 나는 단지 방법을 모른다.

도움이 되었습니까?

해결책

그냥 전화하십시오 Math.abs. 예를 들어:

int x = Math.abs(-5);

설정됩니다 x 에게 5.

다른 팁

당신이 설명하는 개념은 "절대 값"이라고하며 Java는 Math.abs 당신을 위해 그것을하기 위해. 또는 기능 호출을 피하고 직접 할 수 있습니다.

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

또는

if (number < 0)
    number = -number;

당신은 절대 가치를 찾고 있습니다. Math.abs(-5) 반환 5 ...

사용 abs 기능:

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

이 코드입니다 ~ 아니다 양수로 호출되는 것이 안전합니다.

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

절대 값에 대해 묻고 있습니까?

Math.abs (...)는 아마도 원하는 기능입니다.

각 숫자를 래핑하고 싶습니다 Math.abs(). 예를 들어

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

"1"을 인쇄합니다.

글을 쓰지 않으려면 Math.-부분적으로, 당신은 수학 우화를 정적으로 포함시킬 수 있습니다. 그냥 써

import static java.lang.Math.abs;

수입과 함께 abs()-글쓰기만으로 기능

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

이것을 시도하십시오 (X 앞의 음수는 단백조 연산자이므로 유효합니다. 자세히 알아보십시오. 여기):

int answer = -x;

이것으로, 당신은 긍정적 인 것을 부정적인 것으로 바꿀 수 있고, 부정적인 사람은 긍정적으로 돌릴 수 있습니다.


하지만, 당신이 음수 만 양수 만 만들고 싶다면 이것을 시도하십시오.

int answer = Math.abs(x);

또는, 어떤 이유로 abs () 메소드를 사용하지 않으려면 다음을 시도하십시오.

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

도움이되기를 바랍니다! 행운을 빕니다!

이 작업을 수행하는 가장 쉬운 방법은 Math.abs () 호출에 각 번호를 래핑하는 것이므로 다음을 추가 할 수 있습니다.

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

코드가 어떻게 구성되는지를 반영하기 위해 로직 변경으로. 아마도 말이 있지만, 그것은 당신이 원하는 것을합니다.

손실 또는 부재의 개념없이 값을 나타내야하는 경우 (음수 값)이를 "절대 값"이라고합니다.


절대 값을 얻는 논리는 매우 간단합니다. "If it's positive, maintain it. If it's 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);
}

값을 부정 할 수있는 두 가지 방법이 있습니다.

  1. 글쎄, 그것은 가치를 부정합니다 : value = (-value);
  2. "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) 섹션에서 언급 한 코드의 더 컴팩트 한 버전입니다. 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));
}

왜 안돼 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;

다음 솔루션을 추천합니다.

lib 재미없이 :

    value = (value*value)/value

Lib Fun :

   value = Math.abs(value);

두 보완의 역학에 관심이 있다면 여기에 절대적으로 비효율적이지만 예시적인 저수준 방식이 있습니다.

private static int makeAbsolute(int number){
     if(number >=0){
        return number;
     } else{
        return (~number)+1;
     }
}
String s = "-1139627840";
BigInteger bg1 = new BigInteger(s);
System.out.println(bg1.abs());

대안으로 :

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

라이브러리 기능 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

나는 길이의 절대 값이 필요하고 Math.abs를 깊이 들여다보고 내 주장이 길다면 -9223372036854775808L 인 Min_Val이라면 ABS 함수는 절대 값을 반환하지 않고 최소값 만 반환한다는 것을 발견했습니다. 이 경우 코드 가이 ABS 값을 더 사용하는 경우 문제가있을 수 있습니다.

이것을하지 마십시오

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

또는

if (숫자 <0) 숫자 = -번호;

코드에서 버그를 찾을 때 버그가됩니다. RV_NEGATING_RESULT_OF로보고합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top