>> ROB BOWDEN: Hallo, ich bin Rob.
Und ich hoffe, Sie sind aufgeladen bis zum Kredit.
Also erste, was wir tun müssen, wird die Kreditkarte beantragen
Nummer von dem Benutzer.
Hier verwenden wir getLongLong.
Sie könnten auch verwendet haben getString, aber In diesem Fall müssten Sie überprüfen
dass es keine nicht-numerischen Zeichen in der Zeichenfolge.
Also werden wir getLongLong verwenden.
>> Denken Sie daran, dass Sie etwas nicht verwenden können wie getInt, da die Zahl sein wird
zu groß, um in einem ganzzahligen passen.
Sobald wir diese Zahl, die wir siehe hier diese while-Schleife.
Also das while-Schleife ist die Umsetzung Luhn-Algorithmus, die Sie
sehen in der pset spec.
>> Und es ist eigentlich los ein bisschen clever.
So in der pset spec, feststellen, dass Die Schritte eins und zwei sind getrennt.
Wir haben zuerst über die gesamte Kreditkarte gehen Nummer, auf der Suche nach jeder anderen
Zeichen ab dem zweiten bis letzte Zeichen, und Multiplikation
und Addieren aller Stellen.
Dann später, fügen wir in alle anderen Stellen.
>> So zu tun, anstatt die in zwei getrennten Schritten werden wir kombinieren
sie in einer Iteration über die gesamte Kreditkartennummer.
Hier sehen wir int aktuellen stellige Gleichheits Kreditkartennummer, mod 10.
Was ist Kreditkartennummer mod 10 zu tun?
Es gibt uns die letzte Ziffer in der ganzen Zahl.
Also denken Sie daran, dass, wenn wir die geteilt Zahl bis um 10, dann der Rest
wäre, was auch immer die letzte Ziffer ist.
23 durch 10 geteilt, die Rest wird 3 sein.
>> Also die letzte Ziffer, bald hier, sehen wir wir sind auf mult Verzweigung durch zwei.
Also, was wir vorhaben, werden mit mult von 2 wird die Unterscheidung zwischen
einer der "alle andere Zahlen aus die zweite Ziffer "Zahlen.
Mult von 2 wird sich als beginnen falsch, da die letzte Stelle sollte nicht
aus der berücksichtigt werden vorletzte Ziffer.
>> So dann am Ende dieser Schleife für wir sehen, dass wir gehen, dies zu ändern
von false auf true.
Bei der nächsten Iteration der for-Schleife, es wird als wahr, bis
das Ende, wenn wir uns verändern es von true auf false.
Denn dann werden wir auf der dritten zu sein letzte Ziffer, die nicht eine der
Ziffern, die wir mit 2 multiplizieren.
>> Wenn wir zufällig auf einer von denen sein, Stellen, die wir mit 2 multiplizieren möchten,
wir sehen, die wir hinzufügen, um unsere Prüfsumme.
Und hier, wir sind mit der ternäre Operator einmal
wieder ein bisschen clever.
So dass, wenn cur Ziffer kleiner als 5 ist, dann können wir nur tun, cur Ziffer 2 mal.
Das ist einfach.
Wenn es 1 ist, dann wollen wir 2 hinzuzufügen.
Wenn es zwei, wir wollen 4 hinzuzufügen.
Wenn es vier, wir wollen 8 hinzuzufügen.
>> Also, was ist das Besondere an 5?
Nun, 5-mal 2 ist 10.
Und von der pset spec daran erinnern, dass wir die Ziffern der hinzugefügt werden soll
Zahl mal 2 und nicht das Nummer 2 mal selber.
So dass, wenn die ursprüngliche Zahl ist 7, 7 mal 2 ist 14.
Wir wollen 1 plus 4 hinzufügen der Anzahl, nicht 14.
>> So dass hier, wenn die Zahl 5 oder größer ist, was wir tun, ist cur stelligen
mal 2 minus 9.
Und wenn Sie darüber nachdenken, 5 mal 2 10 ist.
Und so fügen wir ein, die 10 minus 9 ist.
Und 6 mal 2 ist 12.
So fügen wir 3, die ist 12 minus 9.
Und das funktioniert für alle Zahlen.
>> Also das ist, was wir fügen unsere Prüfsumme.
Und das andere ist, was Handhabung Schritt Zwei der Luhn-Algorithmus, der nur
Addieren Sie die Ziffer, wenn es nicht passiert zu einem der jeweils anderen Ziffern sein.
Also einmal haben wir, dass dies halten Überblick über die ersten zwei Zeichen der
die Kreditkartennummer, die ersten beiden Zahlen, da wir schließlich werde
auf, dass hier unten können Sie überprüfen möchten, alles in Ordnung, hat ein Visa zu beginnen
mit diesem, und eine American Express Bedürfnisse , um mit diesem zu starten, und so weiter.
>> Schließlich tun wir Kreditkarte Anzahl gleich Kreditkarte
Zahl durch 10 geteilt.
Warum tun wir das?
Nun, wir haben nur die letzte Ziffer behandelt.
Die Division durch 10 verschiebt sich die gesamte Reihe über.
So, jetzt, wenn wir Schleife zurück, wir sind sein werden, den Umgang mit dem
vorletzte Ziffer.
Dann, wenn wir dies wieder treffen, werden wir zum Abschalten des vorletzten
Ziffer, Schleife zurück und behandeln die dritte zum letzten Ziffer, und so weiter, bis die
Zahl 0 erreicht, an welcher Stelle wir brechen aus der while-Schleife.
>> Wir sind auch die Verfolgung der Kredit Kartennummer Länge, denn das ist
zu unterscheiden, ob es eine gültige Kreditkartennummer.
So, jetzt haben wir einmal die berechnete Prüfsumme, die wir bestimmen können, ob es
ist eine gültige Karte.
Die Prüfsumme mod 10 Teil von Luhn-Algorithmus.
Wenn Prüfsumme mod 10 kehrt etwas nicht Null ist, dann wird dies true zurück,
in welchem ​​Fall die Anzahl muss ungültig sein.
>> Andernfalls, wenn Prüfsumme mod 10 0 ist, dann können wir weiter.
Diese große else if sagt, wenn der erste beiden Ziffern sind gleich AMEX 1,
wo hier oben, sehen wir, dass AMEX 1, nach der Spezifikation ist 34.
Und wir werden es auch vergleichen um AMEX 2, 37.
Und die Kreditkartennummer Länge gleich der erwarteten American Express
Kartenlänge, dann können wir drucken American Express.
>> Wir werden eine ähnliche Sache mit Visa zu tun.
Die ersten beiden Ziffern müssen größer sein, als oder gleich 40 oder weniger
als oder gleich 49.
Diejenigen darstellen gültigen Visa-Karten.
Und die Länge muss gleich sein Visa Länge 1 oder Länge 2 Visa.
Und so ist die Länge muss entweder 13 oder 16 Stellen lang.
>> Und schließlich mit Master, ist es ähnlich wie Visa, dass die ersten beiden
Ziffern müssen in eine bestimmte sein Bereich und die Länge muss
genau 16 Stellen.
Also, wenn einer dieser Fälle halten, und dann in der erste Fall, wir AMEX drucken.
Wenn dieser Fall zutrifft, werden wir Visa drucken.
Wenn dieser Fall zutrifft, werden wir drucken Mastercard.
>> Aber wenn keiner von denen zu halten, auch wenn die Prüfsumme gültig war,
wir immer noch ungültig zu drucken.
Denn es ist nicht einer von diese Arten von Karten.
Mein Name ist Rob, und ich hoffe, dass Sie gefunden Kredit interessant.