>> ROB BOWDEN: Hei, jeg er Rob.
Og jeg håper du er belastet opp for kreditt.
Så det første vi må gjøre er be kredittkortet
nummer fra brukeren.
Her bruker vi getLongLong.
Du kunne også brukt getString, men i så fall, ville du må sjekke
at det var ingen ikke-numeriske tegn i strengen.
Så får vi bruke getLongLong.
>> Husk at du ikke kan bruke noe som getInt, vil siden antallet være
for stor til å passe inn i et heltall.
Når vi har det nummeret, vi se her dette mens loop.
Så dette mens loop er å implementere Luhn algoritme som du
se i PSett spec.
>> Og det er faktisk kommer å være litt smart.
Så i PSett spec, legge merke til at Trinnene en og to er separate.
Vi går først over hele kredittkort nummer, på jakt etter alle andre
tegnet med start fra andre til siste tegnet, og multiplisere dem
og legge alle sifrene.
Så etter det, vi legger i alle de andre sifre.
>> Så i stedet for å gjøre dem i to separate trinn, kommer vi til å kombinere
dem i én iterasjon over hele kredittkortnummeret.
Her ser vi int cur siffer lik kredittkortnummer, mod 10.
Hva er kredittkortnummer mod 10 gjør?
Det er å gi oss det siste sifferet i det hele tall.
Så husk at hvis vi delt telle opp ved 10, og deretter resten
ville være hva som siste siffer er.
23 dividert med 10, er Resten vil være tre.
>> Så det siste sifferet, nå her, ser vi vi forgrening på mult av to.
Så hva vi skal bruke mult etter 2 for er å skille mellom
en av de "alle andre tall fra Det andre tallet "tall.
Mult etter to kommer til å starte ut som falsk, siden det siste sifferet bør ikke
vurderes fra nest siste sifferet.
>> Så blir da ved slutten av dette for sløyfen, vi se at vi kommer til å endre dette
fra falsk til ekte.
På den neste iterasjon av for-løkken, det kommer til å anses som sant før
Til slutt, når vi endrer det fra true til false.
Fordi da vil vi være på den tredje til siste siffer, som ikke er en av de
sifre som vi skal multiplisere med to.
>> Så hvis vi tilfeldigvis er på en av disse sifre som vi ønsker å multiplisere med 2,
ser vi at vi legger til vår sjekksum.
Og her er vi ved hjelp av trefoldig operatør til en gang
igjen være litt smart.
Så hvis nå siffer er mindre enn 5, så vi kan bare gjøre Cur siffer ganger to.
Det er enkelt.
Hvis det er en, så vi ønsker å legge til to.
Hvis det er to, ønsker vi å legge til fire.
Hvis det er fire, ønsker vi å legge til åtte.
>> Så hva er spesielt med 5?
Vel, fem ganger to er ti.
Og husker fra PSett spec som vi ønsker å legge sifrene i
antall ganger to, og ikke den antall ganger to selv.
Så hvis det opprinnelige antallet er syv, syv ganger to er 14.
Vi ønsker å legge til en pluss fire til antall, ikke 14.
>> Så her, hvis det antallet er 5 eller høyere, hva vi gjør er nå sifret
ganger to minus ni.
Og hvis du tenker på det, 5 ganger 2 er 10.
Og så legger vi til en, som er 10 minus ni.
Og seks ganger to er tolv.
Så vi legger 3, som er 12 minus ni.
Og det fungerer for alle tall.
>> Så det er det vi legger til til vår sjekksum.
Og dette annet er hva som håndterer Step To av Luhn algoritme, som er bare
legge sifferet hvis det ikke skjer å være en av de hver andre sifrene.
Så når vi har det, dette er å holde styr på de to første tegnene i
kredittkortnummer, de to første sifre, siden vi til slutt kommer
å ønske å bruke den ned her for å bekrefte, all right, har visum for å starte
med dette, og en American Express behov til å begynne med dette, og så videre.
>> Til slutt, vi gjør kredittkort tall er lik kredittkort
antall delt på ti.
Hvorfor gjør vi det?
Vel, vi bare håndtert det siste sifferet.
Dividere med 10 vil skifte hele nummeret over.
Så nå når vi sløyfe tilbake, er vi kommer til å bli håndtert
nest siste sifferet.
Så når vi treffer dette igjen, skal vi å skjære av andre til å vare
siffer, sløyfe tilbake, og behandle den tredje til siste siffer, og så videre, helt til
nummer når 0, på hvilket punkt vi bryte ut av, mens sløyfen.
>> Vi er også å holde styr på kreditt kortnummer lengde, siden det er
viktig å skille mellom hvorvidt det finnes et gyldig kredittkortnummer.
Så nå, når vi har beregnet sjekksum, kan vi finne ut om det
er et gyldig kort.
Sjekksummen mod 10 er en del av Luhn algoritme.
Hvis checksum mod 10 returer noe ikke-null, så dette vil returnere true,
i hvilket tilfelle antallet må være ugyldig.
>> Ellers, hvis checksum mod 10 er 0, så vi kan fortsette.
Denne store else if sier, hvis den første to sifrene er lik AMEX 1,
der opp her, ser vi at AMEX 1, som per spec, er 34.
Og vi vil også sammenligne det til AMEX to, som er 37.
Og kredittkortnummeret lengde er lik den forventede American Express
kort lengde, så vi kan skrive ut American Express.
>> Vi vil gjøre en lignende ting med Visa.
De to første sifre må være større enn eller lik 40 eller mindre
enn eller lik 49.
De representerer gyldige Visa-kort.
Og lengden må være lik Visa Lengde 1 eller Visa Lengde to.
Og slik at lengden må være enten 13 eller 16 siffer lang.
>> Og til slutt med MasterCard, er det lik Visa, at de to først
siffer trenger å være i en viss utvalg, og lengden må
være nøyaktig 16 sifre.
Så hvis noen av disse tilfeller hold, og i det første tilfellet, vil vi skrive ut AMEX.
Hvis denne saken går bra, vil vi skrive ut Visa.
Hvis denne saken går bra, vil vi skrive ut MasterCard.
>> Men hvis ingen av dem holder, selv Hvis kontrollsummen var gyldig,
vi fortsatt skrive ugyldig.
Fordi det er ikke en av disse typer kort.
Mitt navn er Rob, og jeg håper du funnet kreditt interessant.