V tomto článku vám predstavím jednoduchý, ale dôležitý koncept, ktorý je pridaním dvoch čísel v Jave. Predtým, ako budete pokračovať, navrhujem, aby ste sa oboznámili s „Čo je Java“, funkciami Java a ako si môžete nainštalovať Java do vášho systému, ktoré nájdete v predchádzajúcich . To vám pomôže rýchlo a ľahko chytiť prichádzajúce koncepty. Ostatné blogy v tejto sérii výučbových programov Java, ktoré napísal náš odborníci sa podrobne venujú všetkým dôležitým témam Java & J2EE,
V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi,
- Metóda 1
- Metóda 2
- Opakovaný unárny operátor
- Tabuľka počiatočných slučiek
- Bitový operátor a bitový posun v Jave
- Rekurzia
Poďme teda do toho,
Sčítanie dvoch čísel v Jave
Metóda 1
Poďme to pochopiť priamo vyvinutím programu v Jave, ktorý na obrazovke vytlačí „Sčítanie dvoch čísel“.
Trieda AddTwoNumbers {public static void main (String [] args) {System.out.println („Sčítanie dvoch čísel 10 + 20 je“ + (10 + 20))}}
Výkon
Musíme to pochopiť, tu sa pridávajú čísla, priamo povedané 10 + 20, čo je 30. Ale to, čo dostávame čísla z konzoly. V takom prípade sa hodnoty uložia do premennej. Pokiaľ ide o Javu, premenná poľa String uloží tieto čísla na základe ich indexu.
public class Main {public static void main (String [] args) {System.out.println ('Add of two numbers' + args [0] + '+' + args [1] + 'is' + (args [0 ] + args [1]))}}
Výstup pre toto bude taký, aký je zobrazený v konzole, keď prekonáme rovnaké číslo, ktoré je 10 a 20.
Eh, výsledok, ktorý sme tu dostali, nie je požadovaný 30. Pamätajte na argumenty String [], každý vstup, ktorý vezmete z konzoly, je zastúpený v reťazci. Takže tu musíme tieto reťazce previesť na celé číslo, aby sme vypočítali sčítanie.
public class Main {public static void main (String [] args) {//System.out.println('Addition of two numbers '+ args [0] +' + '+ args [1] +' is '+ (args [0] + args [1])) System.out.println ('Sčítanie dvoch čísel' + args [0] + '+' + args [1] + 'je' + (Integer.parseInt (args [0] ) + Integer.parseInt (args [1])))}}
Výkon
Požadovaný výstup je teraz taký, aký chceme. To je sčítanie 10 a 20 je 30 potom, čo sme ich analyzovali z reťazca na celé číslo.
Ďalej v tomto článku o pridaní dvoch čísel v Jave
Metóda 2
Pomocou operátora Odčítanie: Môžeme použiť odčítanie na sčítanie dvoch čísel tak, že bude negovať zápornú hodnotu a bude mať za následok sčítanie.
public class AddTwoNumbers {public static int add (int a, int b) {return a - (-b)} public static void main (String [] args) {System.out.println (add (10, 20)) System. out.println (pridať (-10, 20))}}
Výstup
30
10
fibonacciho rekurzívny c ++
Ďalej v tomto článku o pridaní dvoch čísel v Jave
Opakovaný unárny operátor
To zahŕňa while, základnou myšlienkou je vyniesť hodnotu prvého operandu na nulu. A neustále zvyšovať zodpovedajúci druhý operand o rovnaké množstvo iterácií. Zvážte sami nižšie uvedený príklad.
public class HelloWorld {public static void main (String [] args) {System.out.println ('add' + add (10, 20)) System.out.println ('add' + add (-10, 20)) } public static int add (int a, int b) {//System.out.println ('--->' + a + ':' + b) while (a> 0) {//System.out.println ('while a> 0 --->' + a + ':' + b) b ++ a--} while (a<0) { //System.out.println('while a ' + a + ' : ' + b) b-- a++ } //System.out.println('return b--->'+ a +': '+ b) vrátiť b}}
Výstup
$ javac HelloWorld.java $ java -Xmx128M -Xms16M HelloWorld pridať 30 pridať 10
Ďalej v tomto článku o pridaní dvoch čísel v Jave
Bitový operátor a bitový posun v Jave
Sčítanie dvoch celých čísel môžeme urobiť aj pomocou bitového operátora XOR a carry môžeme získať operátorom AND. Na sčítanie prenosu musíme použiť podpísaný operátor ľavého posunu. Ako sa to stane? Pozrime sa najskôr na príklad.
public class HelloWorld {public static void main (String [] args) {System.out.println ('Add using + ve' + addUsingBits (10, 20)) System.out.println ('Add using -ve' + addUsingBits ( -10, 20))} public static int addUsingBits (int a, int b) {while (b! = 0) {int carry = (a & b) a = a ^ bb = carry<< 1 } return a } }
Výkon
$ javac HelloWorld.java
$ java -Xmx128M -Xms16M HelloWorld
Sčítanie pomocou + ve 30
Sčítanie pomocou -ve 10
Vždy pamätajte na to, že operácia XOR sa používa na vyhodnotenie pridania dvoch bitov. Operácia AND sa používa na vyhodnotenie prenosu dvoch bitov. Poďme to rozobrať, však? Ak ideme po vstupných hodnotách, vezmime a = 10 a b = 20 pre prvú podmienku.
Prevádzka | Vyhodnotenie výrazu | Binárny ekvivalent | Desatinná hodnota |
do | 10 | 00001010 | 10 |
b | dvadsať | 00010100 | dvadsať |
while (b! = 0) | pravda | ||
int carry = (a & b) | 10 a 20 | 0 | 0 |
a = a ^ b | 10 ^ 20 | 00011110 | 30 |
b = nosiť<< 1 | 0<< 1 | 0 | 0 |
vrátiť a | 30 | 00011110 | 30 |
Teraz si vezmime záporný vstup, povedzme -10. Pozrime sa, čo sa stane v nasledujúcej tabuľke.Toto nás nechá v slučke, kým sa desatinná hodnota prenosu nedostane k zápornej hodnote.
Ďalej v tomto článku o pridaní dvoch čísel v Jave
Tabuľka počiatočných slučiek
Prevádzka | Vyhodnotenie výrazu | Binárny ekvivalent | Desatinná hodnota |
do | -10 | 11110110 | -10 |
b | dvadsať | 00010100 | dvadsať |
while (b! = 0) | pravda | ||
int carry = (a & b) | -10 a 20 | 00010100 | dvadsať |
a = a ^ b | -10 ^ 20 | 11100010 | -30 |
b = nosiť<< 1 | dvadsať<< 1 | 00101000 | 40 |
Slučka 1.
Prevádzka | Vyhodnotenie výrazu | Binárny ekvivalent | Desatinná hodnota |
do | -30 | 11100010 | -30 |
b | 40 | 00101000 | 40 |
while (b! = 0) | pravda | ||
int carry = (a & b) | -30 a 40 | 00100000 | 32 |
a = a ^ b | -30 ^ 40 | 11001010 | -54 |
b = nosiť<< 1 | 32<< 1 čo je značka span v html | 00101000 | 64 |
A tak ďalej & hellip, až sa z dôvodu stručnosti ukáže, že slučka bude b = 0, nie sú tu zobrazené všetky výsledky. Takže nižšie uvedená tabuľka predstavuje poslednú slučku v tejto operácii.
Prevádzka | Vyhodnotenie výrazu | Binárny ekvivalent | Desatinná hodnota |
do | -2147483638 | 1111111111111111111111111111110000000000000000000000000001010 | -2147483638 |
b | -2147483648 | 11111111111111111111111111111100000000000000000000000000000 | -2147483648 |
while (b! = 0) | pravda | ||
int carry = (a & b) | -2147483638 a -2147483648 | 11111111111111111111111111111100000000000000000000000000000 | -2147483648 |
a = a ^ b | -2147483638 ^ -2147483648 | 00001010 | 10 |
b = nosiť<< 1 | -2147483648<< 1 | 0 | 0 |
vrátiť a | 10 | 00001010 | 10 |
Takto sa vypočítal prírastok. Uf! toľko na zamyslenie. Len si pomyslite, či tento výpočet vykonali ľudia ručne, hlavne binárne výpočty.
Ďalej v tomto článku o pridaní dvoch čísel v Jave
Rekurzia
Vyššie uvedený program môžeme napísať aj pomocou rekurzie. Výpočtová časť sa mierne líši, zvážime to pre domáce úlohy, však? Dám sem výpis pre rekurziu a vy sa pokúsite zostaviť svoj vlastný stôl, aby ste vedeli, ako to funguje interne. Nie je tiež potrebné preháňať to všetko, čo slúži iba na reprezentačné účely, pokiaľ tu nie ste nadšení z interného fungovania.
public static int addUsingRecursion (int a, int b) {if (b == 0) return a int sum = a ^ b int carry = (a & b)<< 1 return add(sum, carry) }
To všetko bolo na doplnenie dvoch čísel v Jave s použitím operátora + a bez použitia operátora +. Dôvod, prečo ísť za ktorýmkoľvek z nich, bude úplne závisieť od potreby a požiadavky projektu.
Nehodnotil som a netestoval som fungovanie oboch scenárov, aby som prišiel s výkonom. Myslím, že to nadobudne platnosť, iba ak raketu staviate a dopravíte ju do vesmíru.
Vysvetlil som iba čísla týkajúce sa celých čísel pre stručnosť, ktorá má svoj vlastný limit pamäte. Nechám na vás ďalšie preskúmanie pomocou float, double atď. Vždy pamätajte, že ak prekročíte limitnú hodnotu primitívnych typov, výsledok zobrazí inú odpoveď.
Pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Sme tu, aby sme vám pomohli na každom kroku na vašej ceste. Aby ste sa stali čo najlepšími, vymyslíme učebné osnovy určené pre študentov a profesionálov, ktorí chcú byť vývojármi Java.