Mam metodę Java, w której sumuję zbiór liczb. Jednak chcę, aby wszystkie liczby ujemne były traktowane jako pozytywne. Zatem (1) + (2) + (1) + (- 1) powinno wynosić 5.
Jestem pewien, że można to zrobić w bardzo prosty sposób - po prostu nie wiem jak.
java
negative-number
Taca
źródło
źródło
Odpowiedzi:
Wystarczy zadzwonić do Math.abs . Na przykład:
Który będzie ustawiony
x
na5
.źródło
Pojęcie, które opisujesz, nazywa się „wartością bezwzględną”, a Java ma funkcję o nazwie Math.abs, która zrobi to za Ciebie. Lub możesz uniknąć wywołania funkcji i zrobić to sam:
lub
źródło
Szukasz wartości absolutnej, kolego.
Math.abs(-5)
zwraca 5 ...źródło
Użyj
abs
funkcji:źródło
źródło
Spróbuj tego (minus przed x jest prawidłowy, ponieważ jest operatorem jednoargumentowym, więcej informacji znajdziesz tutaj ):
Dzięki temu możesz zamienić pozytywne w negatywne i negatywne w pozytywne.
Jednakże , jeśli chcesz tylko dokonać liczba ujemna dodatnia, to spróbuj tego:
LUB , jeśli z jakiegoś powodu nie chcesz używać metody abs (), spróbuj tego:
Mam nadzieję, że to pomoże! Powodzenia!
źródło
Pytasz o wartości bezwzględne?
Math.abs (...) to funkcja, której prawdopodobnie potrzebujesz.
źródło
Chcesz zawinąć każdą liczbę w
Math.abs()
. na przykładwypisuje "1".
Jeśli chcesz uniknąć pisania
Math.
-part, możesz statycznie dołączyć narzędzie Math. Tylko napiszwraz z importem i możesz odwołać się do
abs()
-funkcji po prostu piszącźródło
Najłatwiejszym, jeśli rozwlekłym sposobem na to jest zawinięcie każdej liczby w wywołaniu Math.abs (), więc należy dodać:
ze zmianami logiki, aby odzwierciedlić strukturę kodu. Być może gadatliwy, ale robi to, co chcesz.
źródło
-
znak (i)? Lub w przeciwnym razie, nawet jeśli nie ma kontroli, czy nie byłoby lepiej użyć funkcji takiej jakabsoluteSum( int[] values ){ /*loop with Math.abs()*/ }
zamiast ręcznego zawijania Math.abs () w każdej wartości? [-1]Kiedy musisz przedstawić wartość bez pojęcia straty lub braku (wartość ujemna), nazywa się to „wartością bezwzględną”.
Układ logiczny, aby uzyskać wartość bezwzględna jest bardzo prosta
"If it's positive, maintain it. If it's negative, negate it"
.Oznacza to, że Twoja logika i kod powinny działać w następujący sposób:
Istnieją 2 sposoby na zanegowanie wartości:
value = (-value);
value = value * (-1);
Obie są w rzeczywistości dwiema stronami tej samej monety. Po prostu zazwyczaj nie pamiętasz, że
value = (-value);
tak jestvalue = 1 * (-value);
.Cóż, jeśli chodzi o sposób, w jaki faktycznie to robisz w Javie, jest to bardzo proste, ponieważ Java zapewnia już odpowiednią funkcję w
Math class
:value = Math.abs(value);
Tak, zrobienie tego bez
Math.abs()
to tylko wiersz kodu z bardzo prostą matematyką, ale po co sprawiać, by kod wyglądał brzydko? Po prostu użyjMath.abs()
funkcji dostarczonej przez Javę ! Zapewniają to z jakiegoś powodu!Jeśli absolutnie potrzebujesz pominąć tę funkcję, możesz użyć
value = (value < 0) ? (-value) : value;
, która jest po prostu bardziej zwartą wersją kodu, o którym wspomniałem w sekcji logiki (3.), używając operatora trójargumentowego (? :
) .Ponadto mogą zaistnieć sytuacje, w których chcesz zawsze przedstawiać utratę lub nieobecność w funkcji, która może otrzymywać zarówno wartości dodatnie, jak i ujemne.
Zamiast wykonywać skomplikowane sprawdzenie, możesz po prostu uzyskać wartość bezwzględną i zanegować ją:
negativeValue = (-Math.abs(value));
Mając to na uwadze i biorąc pod uwagę przypadek z sumą wielu liczb, takich jak twoja, dobrym pomysłem byłoby zaimplementowanie funkcji:
W zależności od prawdopodobieństwa, że będziesz potrzebować ponownie pokrewnego kodu, dobrym pomysłem może być dodanie ich do własnej biblioteki „narzędzi”, rozdzielając najpierw takie funkcje na ich podstawowe komponenty i utrzymując ostatnią funkcję po prostu jako zbiór wywołań podzielone teraz funkcje głównych komponentów:
źródło
Dlaczego nie
multiply that number with -1
?Lubię to:
źródło
Jeśli interesuje Cię mechanika dopełnienia do dwóch, oto absolutnie nieefektywny, ale ilustrujący, niskopoziomowy sposób tego:
źródło
Poleciłbym następujące rozwiązania:
bez lib zabawy:
(Powyższe faktycznie nie działa.)
z zabawą lib:
źródło
Alternatywnie:
źródło
Math.abs()
Można użyć funkcji biblioteki .Math.abs()
zwraca wartość bezwzględną argumentuna przykład:
int x=-5;
System.out.println(Math.abs(x));
Wyjście: 5
int y=6;
System.out.println(Math.abs(y));
Wyjście: 6
źródło
Aby przekonwertować liczbę ujemną na liczbę dodatnią (nazywa się to wartością bezwzględną), używa funkcji Math.abs (). Ta metoda Math.abs () działa w ten sposób
“number = (number < 0 ? -number : number);".
W poniższym przykładzie
Math.abs(-1)
zamieni ujemną liczbę 1 na dodatnią 1.public static void main (String [] args) {
źródło
Potrzebowałem wartości bezwzględnej long i zagłębiłem się w Math.abs i stwierdziłem, że jeśli mój argument jest mniejszy niż LONG.MIN_VAL, czyli -9223372036854775808l, to funkcja abs nie zwróciłaby wartości bezwzględnej, ale tylko wartość minimalną. W takim przypadku, jeśli Twój kod dalej używa tej wartości abs, może wystąpić problem.
źródło
Czy możesz spróbować tego?
źródło
W kotlinie możesz użyć unaryPlus
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/unary-plus.html
źródło
nie rób tego
liczba = (liczba <0? -numer: liczba);
lub
if (liczba <0) liczba = -liczba;
to będzie błąd, gdy uruchomisz znajdź błąd w swoim kodzie, zgłosi go jako RV_NEGATING_RESULT_OF
źródło