J'ai une méthode Java dans laquelle je additionne un ensemble de nombres. Cependant, je veux que tous les nombres négatifs soient traités comme positifs. Donc (1) + (2) + (1) + (- 1) doit être égal à 5.
Je suis sûr qu'il existe un moyen très simple de faire cela - je ne sais tout simplement pas comment.
java
negative-number
Plateau
la source
la source
Réponses:
Appelez simplement Math.abs . Par exemple:
Ce qui sera défini
x
sur5
.la source
Le concept que vous décrivez est appelé «valeur absolue», et Java a une fonction appelée Math.abs pour le faire pour vous. Ou vous pouvez éviter l'appel de fonction et le faire vous-même:
ou
la source
Vous recherchez une valeur absolue, mon pote.
Math.abs(-5)
renvoie 5 ...la source
Utilisez la
abs
fonction:la source
la source
Essayez ceci (le négatif devant le x est valide puisqu'il s'agit d'un opérateur unaire, en savoir plus ici ):
Avec cela, vous pouvez transformer un positif en négatif et un négatif en positif.
Cependant , si vous souhaitez uniquement rendre un nombre négatif positif, essayez ceci:
OU , si vous préférez ne pas utiliser la méthode abs () pour une raison quelconque, essayez ceci:
J'espère que ça aide! Bonne chance!
la source
Vous vous interrogez sur les valeurs absolues?
Math.abs (...) est la fonction que vous souhaitez probablement.
la source
Vous voulez insérer chaque numéro dans
Math.abs()
. par exempleimprime "1".
Si vous voulez éviter d'écrire le
Math.
-part, vous pouvez inclure l'utilitaire Math de manière statique. Ecrivezavec vos importations, et vous pouvez vous référer à la
abs()
-fonction simplement en écrivantla source
Le moyen le plus simple, si détaillé de le faire, consiste à envelopper chaque nombre dans un appel Math.abs (), vous devez donc ajouter:
avec des changements de logique pour refléter la structure de votre code. Verbose, peut-être, mais il fait ce que vous voulez.
la source
-
(s) signe (s)? Ou sinon, y compris s'il n'a pas le contrôle, ne serait-il pas préférable d'utiliser une fonction commeabsoluteSum( int[] values ){ /*loop with Math.abs()*/ }
au lieu d'envelopper manuellement Math.abs () dans chaque valeur? [-1]Lorsque vous avez besoin de représenter une valeur sans le concept de perte ou d'absence (valeur négative), cela s'appelle «valeur absolue».
La logique pour obtenir la valeur absolue est très simple:
"If it's positive, maintain it. If it's negative, negate it"
.Cela signifie que votre logique et votre code doivent fonctionner comme suit:
Il existe 2 façons d'annuler une valeur:
value = (-value);
value = value * (-1);
Les deux sont en fait les deux faces d'une même médaille. Il est juste que vous ne vous souvenez pas généralement que
value = (-value);
est en réalitévalue = 1 * (-value);
.Eh bien, quant à la façon dont vous le faites réellement en Java, c'est très simple, car Java fournit déjà une fonction pour cela, dans le
Math class
:value = Math.abs(value);
Oui, le faire sans
Math.abs()
n'est qu'une ligne de code avec des mathématiques très simples, mais pourquoi rendre votre code laid? Utilisez simplement laMath.abs()
fonction fournie par Java ! Ils le fournissent pour une raison!Si vous devez absolument ignorer la fonction, vous pouvez utiliser
value = (value < 0) ? (-value) : value;
, qui est simplement une version plus compacte du code que j'ai mentionné dans la section logique (3e), en utilisant l' opérateur ternaire (? :
) .En outre, il peut y avoir des situations dans lesquelles vous souhaitez toujours représenter une perte ou une absence dans une fonction qui peut recevoir des valeurs positives et négatives.
Au lieu de faire une vérification compliquée, vous pouvez simplement obtenir la valeur absolue et l'annuler:
negativeValue = (-Math.abs(value));
Dans cet esprit, et en considérant un cas avec une somme de plusieurs nombres comme le vôtre, ce serait une bonne idée d'implémenter une fonction:
En fonction de la probabilité que vous ayez à nouveau besoin de code associé, il peut également être judicieux de les ajouter à votre propre bibliothèque "utils", en divisant d'abord ces fonctions en leurs composants de base et en conservant la fonction finale simplement comme un nid d'appels à les fonctions désormais divisées des composants de base:
la source
Pourquoi pas toi
multiply that number with -1
?Comme ça:
la source
Si vous êtes intéressé par la mécanique du complément à deux, voici la manière absolument inefficace, mais illustrative, de bas niveau:
la source
Je recommanderais les solutions suivantes:
sans lib fun:
(Ce qui précède ne fonctionne pas réellement.)
avec lib fun:
la source
Alternativement:
la source
La fonction de bibliothèque
Math.abs()
peut être utilisée.Math.abs()
renvoie la valeur absolue de l'argumentpar exemple:
int x=-5;
System.out.println(Math.abs(x));
Sortie: 5
int y=6;
System.out.println(Math.abs(y));
Sortie: 6
la source
Pour convertir un nombre négatif en nombre positif (c'est ce qu'on appelle la valeur absolue), utilise Math.abs (). Cette méthode Math.abs () fonctionne comme ceci
“number = (number < 0 ? -number : number);".
Dans l'exemple ci-dessous,
Math.abs(-1)
convertira le nombre négatif 1 en positif 1.public static void main (String [] args) {
la source
J'avais besoin de la valeur absolue d'un long, et j'ai regardé profondément dans Math.abs et j'ai trouvé que si mon argument est inférieur à LONG.MIN_VAL qui est -9223372036854775808l, alors la fonction abs ne renverrait pas une valeur absolue mais seulement la valeur minimale. Dans ce cas, si votre code utilise davantage cette valeur abs, il peut y avoir un problème.
la source
Pouvez-vous essayer celui-ci?
la source
Dans kotlin, vous pouvez utiliser unaryPlus
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/unary-plus.html
la source
ne fais pas ça
nombre = (nombre <0? -nombre: nombre);
ou
if (nombre <0) nombre = -nombre;
ce sera un bogue lorsque vous exécutez find bug sur votre code, il le signalera comme RV_NEGATING_RESULT_OF
la source