Eksempler på Rygge Tall i en Java-programmet
Java er et kraftig programmeringsspråk med et vell av nyttige klasser og metoder som forenkler kjedelige oppgaver og komplekse datastrukturer. Øvelsene for reversering av sifrene i et tall illustrerer noen av Java grunnleggende operasjoner og nyttige funksjoner. En mulig anvendelse av denne prosedyren er å se etter palindromer.
modulo
Den modulo operatør etterlater mange nye programmerere klør seg i hodet fordi mange ikke har tenkt på konseptet med en "rest" siden barneskolen, og programmeringsspråk gi det morsomme navnet "modulo.» Den modul-handling, som returnerer resten av delingen av to heltall, gjør lett arbeid av hakking ett eller flere sifre på slutten av et heltall bare ved hjelp av tierpotenser for divisor. For eksempel:
187% 10 returer 7
364% 100 avkastning 64
For å snu sifrene i et tall, bare sløyfe gjennom hvert siffer, ved hjelp av modulo til pop hvert tall på slutten av nummeret, divisjon og multiplikasjon å skifte sifrene. For eksempel:
int origNum = 123456789
GÅ
int newNum = 0
GÅ
while (origNum 0>) {
newNum * = 10
GÅ
newNum + = origNum% 10
GÅ
origNum / = 10
GÅ
}
Når sløyfen er fullført, vil newNum holde verdien 987.654.321.
string
Strengen og Stringbuffer klasser gir praktiske funksjoner for å konvertere typer og manipulere strenger. Ved hjelp av Stringbuffer er omvendt metoden gjør rygging sifrene i et heltall rask og enkel jobb. For eksempel:
int origNum = 123456789
GÅ
int newNum = 0
GÅ
String str = String.valueOf (origNum)
GÅ
Stringbuffer buf = new String (str)
GÅ
str = buf.reverse (). toString ()
GÅ
newNum = Integer.parseInt (str);
Array
Arrays er ganske enkle datastrukturer som gir deg muligheten til å lage en liste over verdier og navigere gjennom dem. Bruk matte klasse log10 metode for å telle sifrene, skaper en rekke heltall å holde ett siffer på hver indeks, og bruke modulo og andre grunnleggende operatører å dekonstruere og rekonstruere nummeret.
int origNum = 123456789
GÅ
int newNum = 0
GÅ
int count = (origNum == 0)? 1: (int) Math.log10 (origNum) + 1
GÅ
int [] tall = new int [count]
GÅ
int i
GÅ
for (i = 0; i <telle; i ++) {
Sifrene [i] = origNum% 10
GÅ
origNum / = 10
GÅ
}
for (i = 0; i <telle; i ++) {
newNum * = 10
GÅ
newNum + = sifre [i]
GÅ
}
Vector
Vector klasse er en kompleks datastruktur som inneholder en liste over elementer, vokser og krymper dynamisk, og tilveiebringer fremgangsmåter for å få tilgang til en liste på en måte tilsvarende matriser. I motsetning til arrays, kan vektorer holde en rekke ulike type gjenstander, men for dette eksempelet vil det rett og slett holde tallene i heltall. Siden vektorer vokse dynamisk, og Oppramsinger automatisk iterere gjennom listen ved hjelp av nextElement () og hasMoreElements () metoder, er det ikke nødvendig å telle sifrene.
int origNum = 123456789
GÅ
int newNum = 0
GÅ
Vektor siffer = ny Vector ()
GÅ
while (origNum 0>) {
digits.add (origNum% 10)
GÅ
origNum / = 10
GÅ
}
for (oppregning d = digits.elements (); d.hasMoreElements ();) {
newNum * = 10
GÅ
newNum + = Integer.parseInt (d.nextElement (). toString ())
GÅ
}
Sammendrag
Det er mange andre Java-klasser som ligner Vector som kan utforskes ved hjelp av tall reversering trening, som List, Iterator, kø, Arraylist og Linked. Antallet tilbakeslag prosedyren kan lett skrives som en funksjon slik at den kan kalles gjentatte ganger i interaktive programmer og gjenbrukes i flere programmer. Implementering av klasser for å demonstrere de ulike metodene er en utmerket måte å praktisere Java Objektorientert programmering teknikker, for eksempel grensesnitt og arv.