Java - абсолютна стойност

25 отговора 0 прегледа
#1

Java - абсолютна стойност

Започнах малко да се занимавам с Java, по-специално с аплети. Имам въпрос:

Ако, имам числото A, което може да е положително или отрицателно, с кой израз да взема абсолютната му стойност? Примерно -4 да стане 4.

Отговор
в отговор на Haчинaeщ #2

Re: Java - абсолютна стойност

Има си готов метод, който се намира в java.lang.Math (не е нужно да го импорт-ваш - по default си е импортнат).
Math.abs(int/double/... a) - връща ти |a|

Ето ти пример:

import java.util.Scanner;

public static void main(String[] args){
Scanner in = new Scanner( System.in );
int a = in.nextInt();
System.out.print( Math.abs(a) );
}

Успех!

ПП
А вингаи можеш да си направиш и твоя версия на метода abs() .

Отговор
в отговор на Haчинaeщ #3

Re: Java - абсолютна стойност

Значи конвертираш към стринг, после махаш пърив карактер от стринга (минуса) със субстринг и после това дето ти остава го конвертираш към число.

Това е най-сигурно, понеже не е ясно как са ги писали библиотеките в Джата, най-добре ти да си в контрол на тези неща да знаеш, че няма да се обърка нещо

Отговор
в отговор на . #4

добра ебавка






NE SUTOR ULTRA CREPIDAM
Отговор
в отговор на Haчинaeщ #5

Re: Java - абсолютна стойност

каква функция бре ... ти в шести клас не си ли бил (а да не се учеше и преди това) ?!?
number = (number > 0) ? number : -number

Ха сега ходи да искаш 1500 лева някъде и като не ти ги дадат се оплачи в този клуб че гадните робовладелци не ти ги дават, а пък ти си много умен, че и направо гениален, ама те са стиснати.

Отговор
#6

Re: Java - абсолютна стойност

Много лошо! А какво става с целите числа над 2-3 милиарда, дето излизат извън 32 бита при работа със знак? А с дробните?
Освен това какви са тези magic numbers? Защо не използваш FIRST_STRING_POSITION вместо 0 в stringRepresentation[0] и SECOND_STRING_POSITION в stringRepresentation.Substring(1)? (Имената на константите са въпрос на личен вкус, разбира се - но четивността не бива да се жертва.)
Също така какви са тези хакове stringRepresentation[0] - хората нали затова са написали метод Substring - да беше използвал Substring(FIRST_STRING_POSITION,ONE_CHAR_LENGTH). Естествено, преди това сме дефинирали ONE_CHAR_LENGTH да е 1. Хем и стилът се запазва.
Въобще ми се струва, че не си дорасъл още за enterprise software.

Отговор
в отговор на Haчинaeщ #7

Ако ти трябва на Делфи

имам компонент който върши тази работа. Работи безпогрешно.

Отговор
в отговор на Haчинaeщ #8

Re: Java - абсолютна стойност

Правиш проверка, дали числото е отрицателно.

Ако, това е така, отново му задаваш отрицателна стойност(умножаваш го с -1).

Примерно:

if (A < 0)
A = - A;

Но, има и вградена функция, както ти казаха по-горе: Math.abs(A).

Редактирано от Sargon lll на

Отговор
в отговор на Poбoвлaдeлeц2 #9

Re: Java - абсолютна стойност

пича пита с кой израз да вземе абсолютната стойност на числото А а не как да присвои на number абсолютната стойност на number. Кфо праим ако искаме да ползваме старата стойност на number след това, което и изкендзал? Иначе и аз съм робовладелец, ама хората трябва да се уважават.

Отговор
в отговор на bsb_2 #10

Re: Java - абсолютна стойност

Само идиот може да оспорва правилността на клас с името AbsoluteFactory.

Отговор
в отговор на Haчинaeщ #11

Re: Java - абсолютна стойност

Елементарно - намираш адреса на числото и нулираш най-страшния бит ;-)

Отговор
в отговор на Jogo #12

Re: Java - абсолютна стойност

Побитов нот бих рекнал, ама тва с 'най-страшния бит' кърти мифки просто:)

Отговор
в отговор на Javist #13

Re: Java - абсолютна стойност

Присвояването може да се махне ...
Въпросът е че той въобще не може да имплементира една елементарна математическа функция, която се учи в шести клас.
И в случая nick-a "начинаещ" не е извинение - под начинаещ не се разбира "тотално неграмотен".

Ти при цялото уважение, което проявяваш - би ли го взел и би ли приел да си му шеф?

Отговор
в отговор на ГHУCEH®ГHOM #14

Re: Java - абсолютна стойност

ХА-ХА-ХА-ХА най-страшен бит! {жа умра от смях}

(бай-дъ-вей нулирането на най-най-най-страшниа бит няаааама да помогне, но обаче всъщност следната програма на асемблер ще свърши работа:

cwd
xor ax,dx
sub ax,dx

)

[няма ташак, тва е abs(x) където x е число когато компилатора реши, компилатор разбиаш ли]


Чао глупаци!

Отговор
в отговор на . #15

Re: Java - абсолютна стойност

Напоследък компютрите са се разцъкали със страшни мандахерци, и почвам да се замислям дали не е била права една колежка в университета дето слагаше по два asm ret един след друг, защото процесора можел да го "изтърве".

Та по тази логика, аз предлагам направо да си остане на стринг и за по сигурно минус-а да се обърне в плюс, а ако няма никакъв знак на му се вкара един плюс - хем по лесно ще се чете.

Отговор
в отговор на Jogo #16

За "страшния бит"

Това което си написал със сигурност е глупост.

Обаче, ако приемем че:
1. Числото е signed.
2. Числото е отрицателно.
3. Числото не е с плаваща точка.

То, тогава разгледай следното:

template<typename T>
T _abs(const T& x)
{
return (~(T)0 - x) + 1;
}


Което е същото като: x = -x

Ego praeferro ante vesper bibere aquam slivoevensem
Отговор
в отговор на Poбoвлaдeлeц2 #17

Re: Java - абсолютна стойност

не бих, защото няма елементарни Java познания, и незнае как да се справя с това. :)

Отговор
в отговор на Poбoвлaдeлeц2 #18

Re: Java - абсолютна стойност

4oveka e prav, tova shtqh da ti predloja i az :))

Отговор
в отговор на sint #19

Re: Java - абсолютна стойност

n = (n > 0) ? n : -n
porednoto dokazatelstvo za tiq deto po4nali da se ""zanimavat""
haha

Отговор
в отговор на CObject #20

Тц. Не ме кефи така. Няма достатъчно подчертавки.

Ето тва е работната ми версия, за сега обръща само знака ;-)

__int32
__inline
__declspec (nothrow)
__declspec (naked)
__fastcall
__abs (__int32) {
__asm neg ecx
__asm mov eax, ecx
__asm ret
}

Отговор