Frage

Ich habe eine Java-Methode, in dem ich eine Reihe von Zahlen bin summiert werden. Allerdings möchte ich Zahlen irgendwelche Negative wie positive Ergebnisse zu behandeln. So (1) + (2) + (1) + (- 1) soll gleich 5

Ich bin sicher, es ist sehr einfach Art und Weise, dies zu tun -. Ich weiß nur nicht, wie

War es hilfreich?

Lösung

Rufen Sie Math.abs . Zum Beispiel:

int x = Math.abs(-5);

Welche x gesetzt wird 5.

Andere Tipps

Das Konzept Sie beschreiben wird „Absolutwert“ genannt, und Java hat eine Funktion namens Math.abs es für Sie tun. Oder Sie könnten den Funktionsaufruf vermeiden und es selbst tun:

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

oder

if (number < 0)
    number = -number;

Sie suchen nach absolutem Wert, Kumpel. Math.abs(-5) kehrt 5 ...

Mit der abs Funktion:

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

Dieser Code ist nicht sicher auf positive Zahlen genannt werden.

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

Sind Sie absolute Werte zu fragen?

Math.abs (...) ist die Funktion, die Sie wahrscheinlich wollen.

Sie wollen jede Zahl in Math.abs() wickeln. z.

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

druckt "1".

Wenn Sie die Math. Stimmig vermeiden wollen, können Sie das Math sind statisch util. Schreiben Sie einfach

import static java.lang.Math.abs;

zusammen mit Ihren Importen, und Sie können durch das Schreiben

auf die abs()-Funktion nur beziehen
System.out.println(abs(-1));

Versuchen Sie, diese (die negative vor dem x gültig ist, da es ein unärer Operator ist, mehr hier ):

int answer = -x;

Mit diesem können Sie einen positiven zu einem negativen und einem negativen zu einem positiven drehen.


Doch , wenn Sie wollen nur eine negative Zahl machen positive diese dann versuchen:

int answer = Math.abs(x);

ODER , wenn Sie nicht die abs () -Methode aus irgendeinem Grund dann versuchen, diese zu verwenden, würde es vorziehen:

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

Hoffe, es hilft! Viel Glück!

Die einfachste, wenn die ausführliche Art und Weise, dies zu tun, ist jede Zahl in einem Math.abs () -Aufruf wickeln, so dass Sie möchte hinzufügen:

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

mit Logik Änderungen widerzuspiegeln, wie Sie Ihren Code strukturiert ist. Ausführlich, vielleicht, aber es tut, was Sie wollen.

Wenn Sie einen Wert ohne das Konzept eines Verlustes oder Abwesenheit (negativer Wert) darstellen müssen, ist, dass „Absolutwert“ genannt.


Die Logik den Absolutwert zu erhalten, ist ganz einfach:. "If it's positive, maintain it. If it's negative, negate it"


Das bedeutet, dass Ihre Logik und Code sollte wie folgt funktionieren:

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

Es gibt zwei Möglichkeiten, wie Sie können einen Wert negieren:

  1. Mit dem, na ja, negiert es Wert: value = (-value);
  2. Mit dem durch "100% negativ" multipliziert wird, oder "-1": value = value * (-1);

Beide sind eigentlich zwei Seiten derselben Medaille. Es ist nur so, dass Sie in der Regel nicht erinnern, dass value = (-value); tatsächlich value = 1 * (-value); wird.


Nun, wie, wie Sie es tatsächlich in Java zu tun, es ist sehr einfach, weil Java bereits eine Funktion dafür bereithält, in dem Math class: value = Math.abs(value);

Ja, es ohne Math.abs() tut, ist nur eine Zeile Code mit sehr einfachen mathematischen, aber warum Ihren Code aussieht hässlich? Verwenden Sie einfach die Java zur Verfügung gestellt Math.abs() Funktion! Sie bieten es für einen Grund!

Wenn Sie unbedingt die Funktion überspringen, dann können Sie verwenden value = (value < 0) ? (-value) : value;, die einfach eine kompaktere Version des Codes ich in der Logik (3) Abschnitt erwähnt, mit der Ternary Operator (? :) .


Darüber hinaus könnte es Situationen geben, wo Sie wollen immer Verlust oder Abwesenheit in einer Funktion darstellen, die sowohl positive als auch negative Werte erhalten könnten.

Statt einige komplizierte Kontrolle zu tun, können Sie einfach den absoluten Wert erhalten, und negieren es: negativeValue = (-Math.abs(value));


Vor diesem Hintergrund und unter Berücksichtigung einen Falles mit einer Summe von mehreren Nummern wie der Ihren, wäre es eine gute Idee sein, eine Funktion zu implementieren:

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

auf der Wahrscheinlichkeit Je könnten Sie wieder zugehörigen Code benötigen, könnte es auch eine gute Idee sein, sie zuerst zu Ihrer eigenen „utils“ Bibliothek, Splitting solcher Funktionen in ihre Kernkomponenten hinzuzufügen, und die endgültige Funktion einfach als Nest Aufrechterhaltung die Anrufe an die Kernkomponenten jetzt-split Funktionen:

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

Warum nicht Sie multiply that number with -1

wie folgt aus:

//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;

Ich würde die folgenden Lösungen empfehlen:

ohne lib Spaß:

    value = (value*value)/value

mit lib Spaß:

   value = Math.abs(value);

Wenn Sie in der Mechanik des Zweier-Komplements interessiert sind, hier ist das absolut ineffizient, aber anschaulicher Low-Level-Weg, dies gemacht wird:

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());

Alternativ:

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

In der Bibliothek Funktion Math.abs() verwendet werden kann.
Math.abs() gibt den absoluten Wert des Arguments

  
      
  • , wenn das Argument negativ ist, es gibt die Negation des Arguments.
  •   
  • , wenn das Argument positiv ist, es gibt die Anzahl, wie sie ist.
  •   

z:

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

Ausgang: 5

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

Ausgang: 6

brauchte ich den absoluten Wert eines langen und sah in Math.abs tief und festgestellt, dass, wenn mein Argument weniger als LONG.MIN_VAL ist die -9223372036854775808l ist, dann würde die ABS-Funktion nicht einen absoluten Wert zurück, sondern nur das Minimum Wert. Inthis Fall, wenn Ihr Code dieses abs Wert wird mit weiter, dann könnte es ein Problem sein.

das nicht tun

Anzahl = (Anzahl <0 -Nummer: Nummer);

oder

if (Anzahl <0) Nummer = -Nummer;

Dies wird ein Fehler sein, wenn Sie feststellen, Fehler auf Ihrem Code ausführen wird er als RV_NEGATING_RESULT_OF melden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top