Ich habe eine Java-Methode, bei der ich eine Reihe von Zahlen summiere. Ich möchte jedoch, dass negative Zahlen als positive behandelt werden. Also sollte (1) + (2) + (1) + (- 1) gleich 5 sein.
Ich bin sicher, es gibt einen sehr einfachen Weg, dies zu tun - ich weiß nur nicht wie.
java
negative-number
Tablett
quelle
quelle
Antworten:
Rufen Sie einfach Math.abs an . Beispielsweise:
Welche gesetzt wird
x
zu5
.quelle
Das Konzept, das Sie beschreiben, heißt "absoluter Wert", und Java hat eine Funktion namens Math.abs , die dies für Sie erledigt . Oder Sie können den Funktionsaufruf vermeiden und selbst ausführen:
oder
quelle
Du suchst nach einem absoluten Wert, Kumpel.
Math.abs(-5)
gibt 5 zurück ...quelle
Verwenden Sie die
abs
Funktion:quelle
quelle
Versuchen Sie dies (das Negativ vor dem x ist gültig, da es sich um einen unären Operator handelt. Weitere Informationen finden Sie hier ):
Damit können Sie ein Positiv in ein Negativ und ein Negativ in ein Positiv verwandeln.
Allerdings , wenn Sie wollen nur eine negative Zahl positiv machen dann versuchen Sie dies:
ODER , wenn Sie die abs () -Methode aus irgendeinem Grund nicht verwenden möchten, versuchen Sie Folgendes:
Ich hoffe es hilft! Viel Glück!
quelle
Fragen Sie nach absoluten Werten?
Math.abs (...) ist die Funktion, die Sie wahrscheinlich wollen.
quelle
Sie möchten jede Zahl einschließen
Math.abs()
. z.Bdruckt "1" aus.
Wenn Sie das Schreiben des
Math.
Teils vermeiden möchten , können Sie das Math-Util statisch einschließen. Einfach schreibenzusammen mit Ihren Importen, und Sie können auf die
abs()
-funktion nur durch Schreiben verweisenquelle
Der einfachste, wenn auch ausführliche Weg, dies zu tun, besteht darin, jede Nummer in einen Math.abs () -Aufruf zu verpacken. Sie würden also hinzufügen:
mit logischen Änderungen, um die Struktur Ihres Codes widerzuspiegeln. Vielleicht ausführlich, aber es macht, was Sie wollen.
quelle
-
Zeichen einfach zu entfernen ? Oder wäre es nicht besser, eine Funktion wie zu verwenden,absoluteSum( int[] values ){ /*loop with Math.abs()*/ }
anstatt Math.abs () manuell in jeden Wert einzuschließen , auch wenn er keine Kontrolle hat ? [-1]Wenn Sie einen Wert ohne das Konzept eines Verlusts oder einer Abwesenheit (negativer Wert) darstellen müssen, wird dies als "absoluter Wert" bezeichnet.
Die Logik zum Erhalten des Absolutwerts ist sehr einfach :
"If it's positive, maintain it. If it's negative, negate it"
.Dies bedeutet, dass Ihre Logik und Ihr Code wie folgt funktionieren sollten:
Es gibt zwei Möglichkeiten, einen Wert zu negieren:
value = (-value);
value = value * (-1);
Beide sind eigentlich zwei Seiten derselben Medaille. Es ist nur so, dass Sie sich normalerweise nicht daran erinnern, dass dies
value = (-value);
tatsächlich der Fall istvalue = 1 * (-value);
.Nun, wie Sie es tatsächlich in Java machen, es ist sehr einfach, da Java bereits eine Funktion dafür bereitstellt
Math class
:value = Math.abs(value);
Ja, es ohne
Math.abs()
ist nur eine Codezeile mit sehr einfacher Mathematik, aber warum sollte Ihr Code hässlich aussehen? Verwenden Sie einfach die von Java bereitgestellteMath.abs()
Funktion! Sie bieten es aus einem Grund!Wenn Sie die Funktion unbedingt überspringen müssen, können Sie
value = (value < 0) ? (-value) : value;
mit dem ternären Operator (? :
) einfach eine kompaktere Version des Codes verwenden, den ich im Abschnitt Logik (3.) erwähnt habe .Darüber hinaus kann es Situationen geben, in denen Sie Verlust oder Abwesenheit innerhalb einer Funktion immer darstellen möchten, die sowohl positive als auch negative Werte erhalten.
Anstatt eine komplizierte Prüfung durchzuführen, können Sie einfach den absoluten Wert abrufen und ihn negieren:
negativeValue = (-Math.abs(value));
Vor diesem Hintergrund und in Anbetracht eines Falls mit einer Summe mehrerer Zahlen wie Ihrer wäre es eine gute Idee, eine Funktion zu implementieren:
Abhängig von der Wahrscheinlichkeit, dass Sie erneut verwandten Code benötigen, ist es möglicherweise auch eine gute Idee, diese zu Ihrer eigenen "Utils" -Bibliothek hinzuzufügen, diese Funktionen zuerst in ihre Kernkomponenten aufzuteilen und die endgültige Funktion einfach als Nest von Aufrufen zu verwalten die jetzt geteilten Funktionen der Kernkomponenten:
quelle
Warum gehst du nicht
multiply that number with -1
?So was:
quelle
Wenn Sie sich für die Mechanik des Zweierkomplements interessieren, finden Sie hier die absolut ineffiziente, aber anschauliche Methode auf niedriger Ebene:
quelle
Ich würde folgende Lösungen empfehlen:
ohne lib spaß:
(Das oben genannte funktioniert nicht wirklich.)
mit lib spaß:
quelle
Alternative:
quelle
Die Bibliotheksfunktion
Math.abs()
kann verwendet werden.Math.abs()
Gibt den absoluten Wert des Arguments zurückz.B:
int x=-5;
System.out.println(Math.abs(x));
Ausgabe: 5
int y=6;
System.out.println(Math.abs(y));
Ausgabe: 6
quelle
Verwenden Sie Math.abs (), um eine negative Zahl in eine positive Zahl umzuwandeln (dies wird als absoluter Wert bezeichnet). Diese Math.abs () -Methode funktioniert folgendermaßen
“number = (number < 0 ? -number : number);".
Im folgenden Beispiel
Math.abs(-1)
wird die negative Zahl 1 in die positive 1 umgewandelt.public static void main (String [] args) {
quelle
Ich brauchte den absoluten Wert eines Long und schaute tief in Math.abs hinein und stellte fest, dass die abs-Funktion keinen absoluten Wert zurückgeben würde, sondern nur den minimalen Wert, wenn mein Argument kleiner als LONG.MIN_VAL ist, was -9223372036854775808l ist. In diesem Fall liegt möglicherweise ein Problem vor, wenn Ihr Code diesen abs-Wert weiter verwendet.
quelle
Kannst du das bitte versuchen?
quelle
In Kotlin können Sie unaryPlus verwenden
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/unary-plus.html
quelle
Tu das nicht
Nummer = (Nummer <0? -Nummer: Nummer);
oder
if (number <0) number = -number;
Dies ist ein Fehler, wenn Sie einen Suchfehler in Ihrem Code ausführen, der als RV_NEGATING_RESULT_OF gemeldet wird
quelle