1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> ROB BOWDEN: Szia, én vagyok Rob. 3 00:00:14,570 --> 00:00:17,610 És remélem, hogy fizetnie fel hitelt. 4 00:00:17,610 --> 00:00:20,710 Tehát az első dolog, amit tennie kell nem kérheti a hitelkártya 5 00:00:20,710 --> 00:00:22,710 számot a felhasználó. 6 00:00:22,710 --> 00:00:25,060 Itt, mi használ getLongLong. 7 00:00:25,060 --> 00:00:29,070 Ha volna is használják getString, de ebben az esetben, azt ellenőrizni kell 8 00:00:29,070 --> 00:00:32,340 , hogy nem volt a nem-numerikus karakterek a húr. 9 00:00:32,340 --> 00:00:34,560 Így fogjuk használni getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> Ne feledje, hogy nem tudja használni valamit mint getInt, hiszen a szám lesz 11 00:00:38,070 --> 00:00:40,650 Túl nagy ahhoz, hogy beleférjen egy egész szám. 12 00:00:40,650 --> 00:00:44,480 Ha már ez a szám, akkor lásd itt, amíg hurkot. 13 00:00:44,480 --> 00:00:48,210 Tehát ez a while ciklus végrehajtása Luhn algoritmus, amit 14 00:00:48,210 --> 00:00:50,980 lásd a Pset spec. 15 00:00:50,980 --> 00:00:53,830 >> És ez valóban megy egy kicsit okos. 16 00:00:53,830 --> 00:01:00,800 Így a Pset spec, észreveheti, hogy Lépések és kettes külön. 17 00:01:00,800 --> 00:01:05,160 Először megy át a teljes hitelkártya számát, akik minden más 18 00:01:05,160 --> 00:01:09,775 karaktert kezdve a második utolsó karakter, és multiplikálni 19 00:01:09,775 --> 00:01:11,750 és hozzá az összes számjegy. 20 00:01:11,750 --> 00:01:16,150 Majd ezt követően, hogy hozzá az összes többi számjegy. 21 00:01:16,150 --> 00:01:20,660 >> Tehát ahelyett, hogy azokat két külön lépésben fogunk össze 22 00:01:20,660 --> 00:01:24,430 őket egy iteráció alatt teljes hitelkártya számát. 23 00:01:24,430 --> 00:01:29,710 Itt azt látjuk, int akt számjegy egyenlő hitelkártya száma, mod 10. 24 00:01:29,710 --> 00:01:32,050 Mi az a hitelkártya száma mod 10 csinálsz? 25 00:01:32,050 --> 00:01:35,750 Ez adja meg nekünk az utolsó számjegy az egész számot. 26 00:01:35,750 --> 00:01:39,340 Úgy emlékszem, hogy ha megosztott a number 10, majd a maradék 27 00:01:39,340 --> 00:01:42,180 lenne, amit az utolsó számjegy. 28 00:01:42,180 --> 00:01:46,560 23 osztva 10, a fennmaradó 3 lesz. 29 00:01:46,560 --> 00:01:53,760 >> Tehát az utolsó számjegy, most itt látjuk, mi elágazó a mult 2. 30 00:01:53,760 --> 00:01:57,630 Szóval, mit fogunk használni mult 2 fővel van megkülönböztetve 31 00:01:57,630 --> 00:02:02,110 az egyik a "minden számban a második számjegy "számokat. 32 00:02:02,110 --> 00:02:08,310 Mult 2 fog indulni, mint hamis, mivel az utolsó számjegy ne 33 00:02:08,310 --> 00:02:11,750 figyelembe kell venni a a második az utolsó számjegyet. 34 00:02:11,750 --> 00:02:16,760 >> Így aztán a végén ez a for ciklus, akkor látni, hogy mi fog változni ez a 35 00:02:16,760 --> 00:02:18,870 false-ról true. 36 00:02:18,870 --> 00:02:22,520 A következő iteráció a for ciklus, ez meg fog venni igaz, amíg 37 00:02:22,520 --> 00:02:25,090 A végén, ha megváltoztatjuk azt true-ról false. 38 00:02:25,090 --> 00:02:28,290 Mert akkor mi lesz a harmadik, hogy utolsó szám, ami nem tartozik a 39 00:02:28,290 --> 00:02:32,210 számjegyek, hogy meg kell szorozni 2-vel. 40 00:02:32,210 --> 00:02:37,410 >> Tehát, ha történetesen egy ilyen számjegyek szeretnénk megszorozzuk 2, 41 00:02:37,410 --> 00:02:40,610 látjuk, mi hozzátéve, hogy a checksum. 42 00:02:40,610 --> 00:02:43,640 És itt, mi a hármas operátor egyszer 43 00:02:43,640 --> 00:02:45,470 ismét egy kicsit okos. 44 00:02:45,470 --> 00:02:50,170 Tehát, ha akt számjegy kevesebb, mint 5, akkor mi csak nem akt számjegy szer 2. 45 00:02:50,170 --> 00:02:50,690 Ez egyszerű. 46 00:02:50,690 --> 00:02:52,770 Ha ez 1, akkor szeretnénk hozzá 2. 47 00:02:52,770 --> 00:02:54,090 Ha ez 2, szeretnénk felvenni 4.. 48 00:02:54,090 --> 00:02:55,530 Ha ez 4, szeretnénk hozzáadni 8. 49 00:02:55,530 --> 00:02:57,400 >> Tehát mi különleges 5? 50 00:02:57,400 --> 00:03:00,290 Nos, 5-ször 2. 10. 51 00:03:00,290 --> 00:03:05,920 És ne feledjük a Pset spec hogy szeretnénk hozzáadni a számjegyek a 52 00:03:05,920 --> 00:03:09,300 szám 2-szer, és nem pedig szám szer 2 is. 53 00:03:09,300 --> 00:03:13,920 Tehát, ha az eredeti szám 7, 7-szer 2 14. 54 00:03:13,920 --> 00:03:18,930 Azt akarjuk, hogy adjunk hozzá 1 plusz 4 a szám, nem 14. 55 00:03:18,930 --> 00:03:24,050 >> Tehát itt, ha a szám nagyobb vagy 5, mit csinálunk az akt számjegy 56 00:03:24,050 --> 00:03:26,470 szer 2 mínusz 9. 57 00:03:26,470 --> 00:03:29,940 És ha belegondolunk, hogy a 5-ször 2 10. 58 00:03:29,940 --> 00:03:33,130 És így vagyunk hozzá 1, amely 10 mínusz 9. 59 00:03:33,130 --> 00:03:35,490 És 6-szor 2 12. 60 00:03:35,490 --> 00:03:38,380 Szóval hozzá 3, amely 12 mínusz 9. 61 00:03:38,380 --> 00:03:40,250 És ez működik az összes számot. 62 00:03:40,250 --> 00:03:43,330 >> Szóval, ez az, amit mi hozzá a mi checksum. 63 00:03:43,330 --> 00:03:49,970 És ez még az, ami kezelési lépés Két Luhn algoritmus, ami csak 64 00:03:49,970 --> 00:03:55,010 hozzátéve, a szám, ha ez nem történik meg , hogy az egyik a másik minden számjegy. 65 00:03:55,010 --> 00:04:01,440 Tehát, ha van, hogy ez tartja pálya az első két karakter a 66 00:04:01,440 --> 00:04:05,220 a hitelkártya számát, az első két számjegy, mert mi végül is lesz 67 00:04:05,220 --> 00:04:08,980 akar használni, hogy itt, hogy ellenőrizze, Rendben, a Visa el kell kezdenie 68 00:04:08,980 --> 00:04:14,440 ezzel, valamint egy American Express igényeket kezdeni ezzel, és így tovább. 69 00:04:14,440 --> 00:04:16,850 >> Végül, mi a hitelkártya száma egyenlő a hitelkártya 70 00:04:16,850 --> 00:04:18,730 száma osztva 10-zel. 71 00:04:18,730 --> 00:04:19,829 Miért tesszük ezt? 72 00:04:19,829 --> 00:04:22,070 Nos, mi csak kezelni az utolsó számjegyet. 73 00:04:22,070 --> 00:04:24,880 Elosztva 10 tolódik az egész szám vége. 74 00:04:24,880 --> 00:04:27,150 Tehát most, amikor loop back vagyunk lesz kezelni a 75 00:04:27,150 --> 00:04:28,540 a második az utolsó számjegyet. 76 00:04:28,540 --> 00:04:31,060 Aztán amikor elérünk ezt újra, megyünk hogy vágja le a második az utolsó 77 00:04:31,060 --> 00:04:35,060 számjegy, loop vissza, és kezelje a harmadik az utolsó számjegy, és így tovább, amíg a 78 00:04:35,060 --> 00:04:40,120 szám eléri a 0, ekkor hogy kitörjön a while ciklus. 79 00:04:40,120 --> 00:04:43,560 >> Mi is nyomon követhetőek a hitel kártya száma hossza, mivel ez 80 00:04:43,560 --> 00:04:48,440 Fontos különbséget tenni, hogy ez egy érvényes hitelkártya számát. 81 00:04:48,440 --> 00:04:53,560 Tehát most, ha egyszer már számított a ellenőrző, tudjuk meg, hogy ez 82 00:04:53,560 --> 00:04:55,180 érvényes kártyát. 83 00:04:55,180 --> 00:04:58,010 Az ellenőrző mod 10 része A Luhn algoritmus. 84 00:04:58,010 --> 00:05:03,360 Ha az ellenőrző mod 10 visszatér valami nem nulla, akkor ez vissza fog térni igaz, 85 00:05:03,360 --> 00:05:06,650 ebben az esetben, a szám kell, hogy legyen érvénytelen. 86 00:05:06,650 --> 00:05:12,590 >> Ellenkező esetben, ha a checksum mod 10 0, akkor folytatni tudjuk. 87 00:05:12,590 --> 00:05:18,360 Ez a nagy else if mondja, ha az első két számjegy egyenlő AMEX 1, 88 00:05:18,360 --> 00:05:23,640 hol itt, azt látjuk, hogy AMEX 1., mint egy a spec, 34. 89 00:05:23,640 --> 00:05:26,595 És mi is hasonlítani a 2 AMEX, ami 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 És a hitelkártya számát hossza egyenlő a várt American Express 92 00:05:34,210 --> 00:05:37,910 névjegykártya hossza, akkor mi is nyomtat American Express. 93 00:05:37,910 --> 00:05:41,920 >> Majd egy hasonló dolog a Visa. 94 00:05:41,920 --> 00:05:51,940 Az első két számjegy kell többnek lennie, vagy egyenlő, mint 40, vagy kisebb, 95 00:05:51,940 --> 00:05:54,290 vagy egyenlő, mint 49. 96 00:05:54,290 --> 00:05:57,180 Ezek jelentik érvényes Visa kártyákat. 97 00:05:57,180 --> 00:06:01,530 És a hossza egyenlő kell, hogy Visa hossza 1 vagy Visa Hossza 2. 98 00:06:01,530 --> 00:06:07,320 És így a hosszúnak kell lennie, vagy 13 vagy 16 számjegy hosszú. 99 00:06:07,320 --> 00:06:12,240 >> És végül a MasterCard, hogy ez hasonló a Visa, hogy az első két 100 00:06:12,240 --> 00:06:15,340 számjegy kell, hogy legyen egy bizonyos tartomány, és a hosszúság 101 00:06:15,340 --> 00:06:19,440 pontosan 16 számjegy. 102 00:06:19,440 --> 00:06:24,390 Tehát, ha minden ilyen esetben tart, majd Az első esetben, akkor nyomtasson AMEX. 103 00:06:24,390 --> 00:06:26,310 Ha ebben az esetben teljesül, akkor nyomtasson Visa. 104 00:06:26,310 --> 00:06:28,400 Ha ebben az esetben érvényes, fogunk nyomtat MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> De ha egyik sem ezek tart, még akkor is ha a checksum érvényes volt, 106 00:06:32,170 --> 00:06:33,900 még nyomtatni érvénytelen. 107 00:06:33,900 --> 00:06:37,050 Mert ez nem egy az ilyen típusú kártyák. 108 00:06:37,050 --> 00:06:40,030 A nevem Rob, és remélem, találta hitel érdekes. 109 00:06:40,030 --> 00:06:46,272