>> ROB BOWDEN: Hoi, ik ben Rob.
En ik hoop dat je moet betalen voor krediet.
Dus eerste wat we moeten doen is vragen de creditcard
nummer van de gebruiker.
Hier gebruiken we getLongLong.
Je zou ook hebben gebruikt getString, maar in dat geval zou je moeten controleren
dat er geen niet-numerieke tekens in de tekenreeks.
Dus we zullen gebruiken getLongLong.
>> Vergeet niet dat je iets niet kunt gebruiken zoals getInt, omdat het aantal zal zijn
te groot om te passen in een geheel getal.
Zodra we dat nummer, we zie hier deze while lus.
Dus dit whileloop uitvoering Luhn algoritme dat u
zien in de PSET spec.
>> En het is eigenlijk aan de hand een beetje slim te zijn.
Dus in de PSET spec, merken dat Stappen een en twee zijn gescheiden.
We gaan eerst over de gehele credit card nummer, op zoek naar elke andere
karakter vanaf het tweede tot laatste teken, en ze vermenigvuldigen
en het toevoegen van alle digits.
Dan na dat, voegen we in alle andere cijfers.
>> Dus in plaats van die in twee doen afzonderlijke stappen, gaan we combineren
ze in een iteratie over de volledige creditcardnummer.
Hier zien we int huidig ​​cijfer gelijken creditcardnummer, mod 10.
Wat is creditcardnummer mod 10 aan het doen?
Het geeft ons het laatste cijfer het gehele getal.
Dus niet vergeten dat als we verdeeld de nummer met 10, dan is de rest
zou wat dat laatste cijfer is.
23 gedeeld door 10, de rest zal 3.
>> Dus het laatste cijfer, nu hier, zien we we vertakking op mult door 2.
Dus wat we gaan gebruiken mult met 2 voor is onderscheid te maken tussen
een van de "om de andere nummers uit het tweede cijfer "nummers.
Mult door 2 gaat beginnen als vals, omdat het laatste cijfer moet niet
worden gezien van de voorlaatste cijfer.
>> Dus dan aan het einde van deze lus, we zien dat we dit gaan veranderen
van false in true.
Op de volgende iteratie van de lus, het gaat om waar beschouwd totdat
het einde, wanneer we veranderen het van true in false.
Want dan zullen we op de derde te laatste cijfer, dat is niet een van de
cijfers die we moeten vermenigvuldigen met 2.
>> Dus als we toevallig op een van die cijfers die we willen vermenigvuldigen met 2,
we zien dat we toevoegen aan onze checksum.
En hier, gebruiken we de ternaire operator om een ​​keer
weer een beetje slim.
Als huidig ​​cijfers kleiner is dan 5, dan kunnen we gewoon doen huidig ​​cijfer keer 2.
Dat is eenvoudig.
Als het 1, dan willen we voegen 2.
Als het 2, willen we voegen 4.
Als het 4, we willen toevoegen 8.
>> Dus wat is er speciaal aan 5?
Nou, 5 maal 2 is 10.
En vergeet niet uit de PSET spec dat willen we de cijfers van de voegen
aantal keer 2, en niet de aantal keren 2 zelf.
Als het oorspronkelijke aantal is 7, 7 maal 2 is 14.
We willen toevoegen 1 plus 4 het aantal, niet 14.
>> Hier, als het nummer 5 of hoger, wat we doen is huidig ​​cijfers
keer 2 min 9.
En als je erover nadenkt dat, 5 maal 2 is 10.
En dus voegen we 1, die 10 min 9.
En 6 keer 2 is 12.
Dus we zijn het toevoegen van 3, die is 12 min 9.
En dat werkt voor alle nummers.
>> Dus dat is wat we het toevoegen onze checksum.
En dit anders is wat de behandeling Stap Twee van Luhn algoritme, dat is gewoon
het toevoegen van de cijfers als het niet gebeurt een van de elke cijfers bestaan.
We zo eens hebben dat, dit houdt spoor van de eerste twee karakters van
het creditcardnummer, de eerste twee cijfers, omdat we uiteindelijk gaan
te willen gebruiken die hier beneden te gaan, oke, een visum moet beginnen
met deze, en een American Express behoeften te beginnen met deze, enzovoort.
>> Tot slot doen we credit card aantal is gelijk aan credit card
getal gedeeld door 10.
Waarom doen we dat?
Nou, we hebben net behandeld het laatste cijfer.
Delen door 10 zal verschuiven het volledige nummer in.
Dus als we nu lus terug, we zijn zal worden hanteren de
voorlaatste cijfer.
Toen we weer op dit, we gaan af te snijden van de een na laatste
cijfers, loop terug, en omgaan met de derde naar cijfer duren, enzovoort, totdat de
nummer 0 bereikt, op welk punt we breken van de while-lus.
>> We zijn ook het bijhouden van de krediet kaartnummer lengte, want dat is
belangrijk onderscheid te maken of het nu een geldig creditcardnummer.
Dus nu, als we hebben berekend dat de checksum, kunnen we bepalen of het
is een geldige kaart.
De checksum mod 10 is onderdeel van Luhn algoritme.
Als checksum mod 10 rendementen iets niet nul, dan geeft true,
waarbij het aantal moet ongeldig.
>> Anders, als checksum mod 10 0 is, dan kunnen we verder.
Deze grote anders als zegt, als de eerste twee cijfers gelijk zijn aan AMEX 1,
waar hier, zien we dat AMEX 1, volgens de specificatie, is 34.
En we zullen ook vergelijken tot AMEX 2, dat 37.
En het creditcardnummer lengte is gelijk aan de verwachte American Express
kaart lengte, dan kunnen we afdrukken American Express.
>> We zullen een soortgelijk iets doen met Visa.
De eerste twee cijfers moet groter dan of gelijk aan 40 of minder
dan of gelijk aan 49.
Die vertegenwoordigen geldige Visa-kaarten.
En de lengte moet gelijk zijn Visa Lengte 1 of Visa Lengte 2.
En dus de lengte moet ofwel 13 of 16 cijfers lang.
>> En tenslotte met MasterCard, het is Soortgelijke Visa, dat de eerste twee
cijfers moeten worden in een bepaalde bereik, en de lengte moet
precies 16 cijfers.
Dus als een van die gevallen te houden, dan in het eerste geval zullen we AMEX drukken.
Als dit geval geldt, zullen we Visa drukken.
Als dit geval geldt, zullen we afdrukken MasterCard.
>> Maar als geen van deze houden, zelfs Als de controlesom geldig was,
we nog steeds afdrukken ongeldig.
Want het is niet een van die soorten kaarten.
Mijn naam is Rob, en ik hoop dat je gevonden credit interessant.