1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Salut, je suis Rob. 3 00:00:14,570 --> 00:00:17,610 Et j'espère que vous êtes facturé aux établissements de crédit. 4 00:00:17,610 --> 00:00:20,710 Donc la première chose que nous devons faire est de demander la carte de crédit 5 00:00:20,710 --> 00:00:22,710 numéro de l'utilisateur. 6 00:00:22,710 --> 00:00:25,060 Ici, nous utilisons getLongLong. 7 00:00:25,060 --> 00:00:29,070 Vous auriez pu également utilisé getString, mais dans ce cas, vous aurez besoin de vérifier 8 00:00:29,070 --> 00:00:32,340 qu'il n'y avait pas non numérique caractères de la chaîne. 9 00:00:32,340 --> 00:00:34,560 Donc nous utiliserons getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> N'oubliez pas que vous ne pouvez pas utiliser quelque chose comme getInt, puisque le nombre sera 11 00:00:38,070 --> 00:00:40,650 trop gros pour tenir dans un entier. 12 00:00:40,650 --> 00:00:44,480 Une fois que nous avons ce nombre, nous voir ici cette boucle while. 13 00:00:44,480 --> 00:00:48,210 Donc, cette boucle while exécute L'algorithme de Luhn que vous 14 00:00:48,210 --> 00:00:50,980 voir dans la spécification pset. 15 00:00:50,980 --> 00:00:53,830 >> Et il va vraiment être un peu intelligent. 16 00:00:53,830 --> 00:01:00,800 Donc, dans la spécification pset, notez que Étapes un et deux sont séparés. 17 00:01:00,800 --> 00:01:05,160 Nous allons d'abord sur la totalité de la carte de crédit nombre, à la recherche de tous les autres 18 00:01:05,160 --> 00:01:09,775 caractère à partir de la seconde à dernier caractère, et les multiplier 19 00:01:09,775 --> 00:01:11,750 et en ajoutant tous les chiffres. 20 00:01:11,750 --> 00:01:16,150 Puis après cela, nous ajoutons tous les autres chiffres. 21 00:01:16,150 --> 00:01:20,660 >> Ainsi, au lieu de faire les deux en étapes distinctes, nous allons combiner 22 00:01:20,660 --> 00:01:24,430 en une seule itération sur la intégralité du numéro de carte de crédit. 23 00:01:24,430 --> 00:01:29,710 Ici, nous voyons int égaux chiffres actu numéro de carte de crédit, mod 10. 24 00:01:29,710 --> 00:01:32,050 Quel est le numéro de carte de crédit mod 10 faire? 25 00:01:32,050 --> 00:01:35,750 Il nous donne le dernier chiffre du nombre entier. 26 00:01:35,750 --> 00:01:39,340 Alors, n'oubliez pas que si nous avons divisé le compter jusqu'à 10, puis le reste 27 00:01:39,340 --> 00:01:42,180 serait ce que ce dernier chiffre est. 28 00:01:42,180 --> 00:01:46,560 23 divisé par 10, le reste sera 3. 29 00:01:46,560 --> 00:01:53,760 >> Ainsi, le dernier chiffre, ici, nous voyons nous ramification sur mult par 2. 30 00:01:53,760 --> 00:01:57,630 Donc, ce que nous allons être en utilisant mult par 2 pour se différencier entre 31 00:01:57,630 --> 00:02:02,110 un des «numéros de tous les autres Le deuxième «chiffres. 32 00:02:02,110 --> 00:02:08,310 Mult par 2 va commencer comme faux, puisque le dernier chiffre ne devrait pas 33 00:02:08,310 --> 00:02:11,750 être considéré comme de la avant-dernier chiffre. 34 00:02:11,750 --> 00:02:16,760 >> Alors à la fin de cette boucle, nous voyons que nous allons changer ce 35 00:02:16,760 --> 00:02:18,870 de false à true. 36 00:02:18,870 --> 00:02:22,520 Sur la prochaine itération de la boucle pour, ça va considéré vrai jusqu'à ce que 37 00:02:22,520 --> 00:02:25,090 la fin, lorsque nous changeons il de vrai à faux. 38 00:02:25,090 --> 00:02:28,290 Parce que nous serons sur le troisième dernier chiffre, qui n'est pas l'un de l' 39 00:02:28,290 --> 00:02:32,210 chiffres que nous devrions multiplier par 2. 40 00:02:32,210 --> 00:02:37,410 >> Donc, si nous arrive d'être sur un de ces chiffres que nous voulons multiplier par 2, 41 00:02:37,410 --> 00:02:40,610 nous voyons que nous ajoutons à notre contrôle. 42 00:02:40,610 --> 00:02:43,640 Et ici, nous utilisons la opérateur ternaire à la fois 43 00:02:43,640 --> 00:02:45,470 encore être un peu intelligent. 44 00:02:45,470 --> 00:02:50,170 Donc, si courant chiffre est inférieur à 5, puis nous pouvons seulement faire des temps de chiffres actu 2. 45 00:02:50,170 --> 00:02:50,690 C'est simple. 46 00:02:50,690 --> 00:02:52,770 Si c'est 1, alors nous voulons ajouter 2. 47 00:02:52,770 --> 00:02:54,090 Si c'est 2, nous voulons ajouter 4. 48 00:02:54,090 --> 00:02:55,530 Si c'est 4, nous voulons ajouter 8. 49 00:02:55,530 --> 00:02:57,400 >> Alors, quelle est la particularité de 5? 50 00:02:57,400 --> 00:03:00,290 Eh bien, 5 fois 2 est de 10. 51 00:03:00,290 --> 00:03:05,920 Et rappelez-vous de la spécification pset que nous voulons ajouter les chiffres de l' 52 00:03:05,920 --> 00:03:09,300 nombre de fois 2, et pas le nombre de fois 2 lui-même. 53 00:03:09,300 --> 00:03:13,920 Donc, si le nombre initial est 7, 7 fois 2 est 14. 54 00:03:13,920 --> 00:03:18,930 Nous voulons ajouter 1 plus 4 le nombre, pas 14. 55 00:03:18,930 --> 00:03:24,050 >> Donc ici, si le nombre est de 5 ou plus, ce que nous faisons est le chiffre courant 56 00:03:24,050 --> 00:03:26,470 2 fois moins 9. 57 00:03:26,470 --> 00:03:29,940 Et si vous pensez à ce sujet, 5 fois 2 est de 10. 58 00:03:29,940 --> 00:03:33,130 Et si nous ajoutons 1, qui est 10 moins 9. 59 00:03:33,130 --> 00:03:35,490 Et 6 fois 2 est 12. 60 00:03:35,490 --> 00:03:38,380 Nous sommes donc en ajoutant 3, qui est 12 moins 9. 61 00:03:38,380 --> 00:03:40,250 Et cela fonctionne pour tous les numéros. 62 00:03:40,250 --> 00:03:43,330 >> C'est ce que nous ajoutons à notre contrôle. 63 00:03:43,330 --> 00:03:49,970 Et ce monde est ce qui Étape manipulation Deux de l'algorithme de Luhn, qui est juste 64 00:03:49,970 --> 00:03:55,010 ajoutant le chiffre si elle ne se fait pas l'un de tous les autres chiffres. 65 00:03:55,010 --> 00:04:01,440 Donc, une fois que nous avons, ce garde la trace des deux premiers caractères du 66 00:04:01,440 --> 00:04:05,220 le numéro de carte de crédit, les deux premiers chiffres, puisque nous allons par la suite 67 00:04:05,220 --> 00:04:08,980 de vouloir utiliser que ici pour vérifier, tout droit, un visa doit commencer 68 00:04:08,980 --> 00:04:14,440 avec cela, et un des besoins American Express à commencer par cela, et ainsi de suite. 69 00:04:14,440 --> 00:04:16,850 >> Enfin, nous faisons la carte de crédit nombre égal de carte de crédit 70 00:04:16,850 --> 00:04:18,730 nombre divisé par 10. 71 00:04:18,730 --> 00:04:19,829 Pourquoi faisons-nous cela? 72 00:04:19,829 --> 00:04:22,070 Eh bien, nous venons manipulé le dernier chiffre. 73 00:04:22,070 --> 00:04:24,880 En divisant par 10 se déplacera l'ensemble du nombre plus. 74 00:04:24,880 --> 00:04:27,150 Alors maintenant, quand on boucle en arrière, nous sommes va être la manipulation du 75 00:04:27,150 --> 00:04:28,540 avant-dernier chiffre. 76 00:04:28,540 --> 00:04:31,060 Puis, quand nous avons atteint cette fois, nous allons pour couper l'avant-dernier 77 00:04:31,060 --> 00:04:35,060 chiffres, boucle arrière, et gérer la troisième pour durer chiffres, et ainsi de suite, jusqu'à ce que le 78 00:04:35,060 --> 00:04:40,120 nombre atteint 0, à quel point nous sortir de la boucle while. 79 00:04:40,120 --> 00:04:43,560 >> Nous sommes également le suivi du crédit longueur du numéro de la carte, puisque c'est 80 00:04:43,560 --> 00:04:48,440 important de distinguer si c'est un numéro de carte de crédit valide. 81 00:04:48,440 --> 00:04:53,560 Alors maintenant, une fois que nous avons calculé la contrôle, nous pouvons déterminer si elle 82 00:04:53,560 --> 00:04:55,180 est une carte valide. 83 00:04:55,180 --> 00:04:58,010 Le mod de contrôle 10 est partie de l'algorithme de Luhn. 84 00:04:58,010 --> 00:05:03,360 Si mod 10 revient checksum quelque chose non nulle, alors ce sera return true, 85 00:05:03,360 --> 00:05:06,650 Dans ce cas, le nombre doit être valide. 86 00:05:06,650 --> 00:05:12,590 >> Sinon, si la somme de contrôle mod 10 est 0, alors nous pouvons continuer. 87 00:05:12,590 --> 00:05:18,360 Ce grand chose si l'on dit, si le premier deux chiffres sont égaux à 1 AMEX, 88 00:05:18,360 --> 00:05:23,640 où ici, nous voyons que AMEX 1, comme pour la spécification, c'est 34. 89 00:05:23,640 --> 00:05:26,595 Et nous allons aussi comparons AMEX à 2, qui est 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 Et la carte de crédit longueur du numéro est égale à la attendue American Express 92 00:05:34,210 --> 00:05:37,910 longueur de la carte, alors nous pouvons imprimer American Express. 93 00:05:37,910 --> 00:05:41,920 >> Nous ferons la même chose avec Visa. 94 00:05:41,920 --> 00:05:51,940 Les deux premiers chiffres doivent être supérieures supérieur ou égal à 40, ou moins 95 00:05:51,940 --> 00:05:54,290 supérieur ou égal à 49. 96 00:05:54,290 --> 00:05:57,180 Ceux-ci représentent les cartes Visa valides. 97 00:05:57,180 --> 00:06:01,530 Et la longueur doit être égale à Visa Durée 1 ou Visa Durée 2. 98 00:06:01,530 --> 00:06:07,320 Et donc, la longueur doit être soit 13 ou 16 chiffres. 99 00:06:07,320 --> 00:06:12,240 >> Et enfin avec MasterCard, c'est semblable à Visa, que les deux premiers 100 00:06:12,240 --> 00:06:15,340 chiffres doivent être dans une certaine gamme, et le moût de longueur 101 00:06:15,340 --> 00:06:19,440 être exactement 16 chiffres. 102 00:06:19,440 --> 00:06:24,390 Donc, si l'un de ces cas détiennent, puis en le premier cas, nous allons imprimer AMEX. 103 00:06:24,390 --> 00:06:26,310 Si ce cas est titulaire, nous l'imprimerons Visa. 104 00:06:26,310 --> 00:06:28,400 Si ce cas est titulaire, nous allons imprimer MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> Mais si aucun de ceux tenir, même si la somme de contrôle était valide, 106 00:06:32,170 --> 00:06:33,900 nous imprimons toujours valide. 107 00:06:33,900 --> 00:06:37,050 Parce que ce n'est pas l'un des ces types de cartes. 108 00:06:37,050 --> 00:06:40,030 Mon nom est Rob, et j'espère que vous trouvé intéressant de crédit. 109 00:06:40,030 --> 00:06:46,272