>> ROB BOWDEN: Salut, je suis Rob.
Et j'espère que vous êtes facturé aux établissements de crédit.
Donc la première chose que nous devons faire est de demander la carte de crédit
numéro de l'utilisateur.
Ici, nous utilisons getLongLong.
Vous auriez pu également utilisé getString, mais dans ce cas, vous aurez besoin de vérifier
qu'il n'y avait pas non numérique caractères de la chaîne.
Donc nous utiliserons getLongLong.
>> N'oubliez pas que vous ne pouvez pas utiliser quelque chose comme getInt, puisque le nombre sera
trop gros pour tenir dans un entier.
Une fois que nous avons ce nombre, nous voir ici cette boucle while.
Donc, cette boucle while exécute L'algorithme de Luhn que vous
voir dans la spécification pset.
>> Et il va vraiment être un peu intelligent.
Donc, dans la spécification pset, notez que Étapes un et deux sont séparés.
Nous allons d'abord sur la totalité de la carte de crédit nombre, à la recherche de tous les autres
caractère à partir de la seconde à dernier caractère, et les multiplier
et en ajoutant tous les chiffres.
Puis après cela, nous ajoutons tous les autres chiffres.
>> Ainsi, au lieu de faire les deux en étapes distinctes, nous allons combiner
en une seule itération sur la intégralité du numéro de carte de crédit.
Ici, nous voyons int égaux chiffres actu numéro de carte de crédit, mod 10.
Quel est le numéro de carte de crédit mod 10 faire?
Il nous donne le dernier chiffre du nombre entier.
Alors, n'oubliez pas que si nous avons divisé le compter jusqu'à 10, puis le reste
serait ce que ce dernier chiffre est.
23 divisé par 10, le reste sera 3.
>> Ainsi, le dernier chiffre, ici, nous voyons nous ramification sur mult par 2.
Donc, ce que nous allons être en utilisant mult par 2 pour se différencier entre
un des «numéros de tous les autres Le deuxième «chiffres.
Mult par 2 va commencer comme faux, puisque le dernier chiffre ne devrait pas
être considéré comme de la avant-dernier chiffre.
>> Alors à la fin de cette boucle, nous voyons que nous allons changer ce
de false à true.
Sur la prochaine itération de la boucle pour, ça va considéré vrai jusqu'à ce que
la fin, lorsque nous changeons il de vrai à faux.
Parce que nous serons sur le troisième dernier chiffre, qui n'est pas l'un de l'
chiffres que nous devrions multiplier par 2.
>> Donc, si nous arrive d'être sur un de ces chiffres que nous voulons multiplier par 2,
nous voyons que nous ajoutons à notre contrôle.
Et ici, nous utilisons la opérateur ternaire à la fois
encore être un peu intelligent.
Donc, si courant chiffre est inférieur à 5, puis nous pouvons seulement faire des temps de chiffres actu 2.
C'est simple.
Si c'est 1, alors nous voulons ajouter 2.
Si c'est 2, nous voulons ajouter 4.
Si c'est 4, nous voulons ajouter 8.
>> Alors, quelle est la particularité de 5?
Eh bien, 5 fois 2 est de 10.
Et rappelez-vous de la spécification pset que nous voulons ajouter les chiffres de l'
nombre de fois 2, et pas le nombre de fois 2 lui-même.
Donc, si le nombre initial est 7, 7 fois 2 est 14.
Nous voulons ajouter 1 plus 4 le nombre, pas 14.
>> Donc ici, si le nombre est de 5 ou plus, ce que nous faisons est le chiffre courant
2 fois moins 9.
Et si vous pensez à ce sujet, 5 fois 2 est de 10.
Et si nous ajoutons 1, qui est 10 moins 9.
Et 6 fois 2 est 12.
Nous sommes donc en ajoutant 3, qui est 12 moins 9.
Et cela fonctionne pour tous les numéros.
>> C'est ce que nous ajoutons à notre contrôle.
Et ce monde est ce qui Étape manipulation Deux de l'algorithme de Luhn, qui est juste
ajoutant le chiffre si elle ne se fait pas l'un de tous les autres chiffres.
Donc, une fois que nous avons, ce garde la trace des deux premiers caractères du
le numéro de carte de crédit, les deux premiers chiffres, puisque nous allons par la suite
de vouloir utiliser que ici pour vérifier, tout droit, un visa doit commencer
avec cela, et un des besoins American Express à commencer par cela, et ainsi de suite.
>> Enfin, nous faisons la carte de crédit nombre égal de carte de crédit
nombre divisé par 10.
Pourquoi faisons-nous cela?
Eh bien, nous venons manipulé le dernier chiffre.
En divisant par 10 se déplacera l'ensemble du nombre plus.
Alors maintenant, quand on boucle en arrière, nous sommes va être la manipulation du
avant-dernier chiffre.
Puis, quand nous avons atteint cette fois, nous allons pour couper l'avant-dernier
chiffres, boucle arrière, et gérer la troisième pour durer chiffres, et ainsi de suite, jusqu'à ce que le
nombre atteint 0, à quel point nous sortir de la boucle while.
>> Nous sommes également le suivi du crédit longueur du numéro de la carte, puisque c'est
important de distinguer si c'est un numéro de carte de crédit valide.
Alors maintenant, une fois que nous avons calculé la contrôle, nous pouvons déterminer si elle
est une carte valide.
Le mod de contrôle 10 est partie de l'algorithme de Luhn.
Si mod 10 revient checksum quelque chose non nulle, alors ce sera return true,
Dans ce cas, le nombre doit être valide.
>> Sinon, si la somme de contrôle mod 10 est 0, alors nous pouvons continuer.
Ce grand chose si l'on dit, si le premier deux chiffres sont égaux à 1 AMEX,
où ici, nous voyons que AMEX 1, comme pour la spécification, c'est 34.
Et nous allons aussi comparons AMEX à 2, qui est 37.
Et la carte de crédit longueur du numéro est égale à la attendue American Express
longueur de la carte, alors nous pouvons imprimer American Express.
>> Nous ferons la même chose avec Visa.
Les deux premiers chiffres doivent être supérieures supérieur ou égal à 40, ou moins
supérieur ou égal à 49.
Ceux-ci représentent les cartes Visa valides.
Et la longueur doit être égale à Visa Durée 1 ou Visa Durée 2.
Et donc, la longueur doit être soit 13 ou 16 chiffres.
>> Et enfin avec MasterCard, c'est semblable à Visa, que les deux premiers
chiffres doivent être dans une certaine gamme, et le moût de longueur
être exactement 16 chiffres.
Donc, si l'un de ces cas détiennent, puis en le premier cas, nous allons imprimer AMEX.
Si ce cas est titulaire, nous l'imprimerons Visa.
Si ce cas est titulaire, nous allons imprimer MasterCard.
>> Mais si aucun de ceux tenir, même si la somme de contrôle était valide,
nous imprimons toujours valide.
Parce que ce n'est pas l'un des ces types de cartes.
Mon nom est Rob, et j'espère que vous trouvé intéressant de crédit.