>> ROB BOWDEN: Szia, én vagyok Rob.
És remélem, hogy fizetnie fel hitelt.
Tehát az első dolog, amit tennie kell nem kérheti a hitelkártya
számot a felhasználó.
Itt, mi használ getLongLong.
Ha volna is használják getString, de ebben az esetben, azt ellenőrizni kell
, hogy nem volt a nem-numerikus karakterek a húr.
Így fogjuk használni getLongLong.
>> Ne feledje, hogy nem tudja használni valamit mint getInt, hiszen a szám lesz
Túl nagy ahhoz, hogy beleférjen egy egész szám.
Ha már ez a szám, akkor lásd itt, amíg hurkot.
Tehát ez a while ciklus végrehajtása Luhn algoritmus, amit
lásd a Pset spec.
>> És ez valóban megy egy kicsit okos.
Így a Pset spec, észreveheti, hogy Lépések és kettes külön.
Először megy át a teljes hitelkártya számát, akik minden más
karaktert kezdve a második utolsó karakter, és multiplikálni
és hozzá az összes számjegy.
Majd ezt követően, hogy hozzá az összes többi számjegy.
>> Tehát ahelyett, hogy azokat két külön lépésben fogunk össze
őket egy iteráció alatt teljes hitelkártya számát.
Itt azt látjuk, int akt számjegy egyenlő hitelkártya száma, mod 10.
Mi az a hitelkártya száma mod 10 csinálsz?
Ez adja meg nekünk az utolsó számjegy az egész számot.
Úgy emlékszem, hogy ha megosztott a number 10, majd a maradék
lenne, amit az utolsó számjegy.
23 osztva 10, a fennmaradó 3 lesz.
>> Tehát az utolsó számjegy, most itt látjuk, mi elágazó a mult 2.
Szóval, mit fogunk használni mult 2 fővel van megkülönböztetve
az egyik a "minden számban a második számjegy "számokat.
Mult 2 fog indulni, mint hamis, mivel az utolsó számjegy ne
figyelembe kell venni a a második az utolsó számjegyet.
>> Így aztán a végén ez a for ciklus, akkor látni, hogy mi fog változni ez a
false-ról true.
A következő iteráció a for ciklus, ez meg fog venni igaz, amíg
A végén, ha megváltoztatjuk azt true-ról false.
Mert akkor mi lesz a harmadik, hogy utolsó szám, ami nem tartozik a
számjegyek, hogy meg kell szorozni 2-vel.
>> Tehát, ha történetesen egy ilyen számjegyek szeretnénk megszorozzuk 2,
látjuk, mi hozzátéve, hogy a checksum.
És itt, mi a hármas operátor egyszer
ismét egy kicsit okos.
Tehát, ha akt számjegy kevesebb, mint 5, akkor mi csak nem akt számjegy szer 2.
Ez egyszerű.
Ha ez 1, akkor szeretnénk hozzá 2.
Ha ez 2, szeretnénk felvenni 4..
Ha ez 4, szeretnénk hozzáadni 8.
>> Tehát mi különleges 5?
Nos, 5-ször 2. 10.
És ne feledjük a Pset spec hogy szeretnénk hozzáadni a számjegyek a
szám 2-szer, és nem pedig szám szer 2 is.
Tehát, ha az eredeti szám 7, 7-szer 2 14.
Azt akarjuk, hogy adjunk hozzá 1 plusz 4 a szám, nem 14.
>> Tehát itt, ha a szám nagyobb vagy 5, mit csinálunk az akt számjegy
szer 2 mínusz 9.
És ha belegondolunk, hogy a 5-ször 2 10.
És így vagyunk hozzá 1, amely 10 mínusz 9.
És 6-szor 2 12.
Szóval hozzá 3, amely 12 mínusz 9.
És ez működik az összes számot.
>> Szóval, ez az, amit mi hozzá a mi checksum.
És ez még az, ami kezelési lépés Két Luhn algoritmus, ami csak
hozzátéve, a szám, ha ez nem történik meg , hogy az egyik a másik minden számjegy.
Tehát, ha van, hogy ez tartja pálya az első két karakter a
a hitelkártya számát, az első két számjegy, mert mi végül is lesz
akar használni, hogy itt, hogy ellenőrizze, Rendben, a Visa el kell kezdenie
ezzel, valamint egy American Express igényeket kezdeni ezzel, és így tovább.
>> Végül, mi a hitelkártya száma egyenlő a hitelkártya
száma osztva 10-zel.
Miért tesszük ezt?
Nos, mi csak kezelni az utolsó számjegyet.
Elosztva 10 tolódik az egész szám vége.
Tehát most, amikor loop back vagyunk lesz kezelni a
a második az utolsó számjegyet.
Aztán amikor elérünk ezt újra, megyünk hogy vágja le a második az utolsó
számjegy, loop vissza, és kezelje a harmadik az utolsó számjegy, és így tovább, amíg a
szám eléri a 0, ekkor hogy kitörjön a while ciklus.
>> Mi is nyomon követhetőek a hitel kártya száma hossza, mivel ez
Fontos különbséget tenni, hogy ez egy érvényes hitelkártya számát.
Tehát most, ha egyszer már számított a ellenőrző, tudjuk meg, hogy ez
érvényes kártyát.
Az ellenőrző mod 10 része A Luhn algoritmus.
Ha az ellenőrző mod 10 visszatér valami nem nulla, akkor ez vissza fog térni igaz,
ebben az esetben, a szám kell, hogy legyen érvénytelen.
>> Ellenkező esetben, ha a checksum mod 10 0, akkor folytatni tudjuk.
Ez a nagy else if mondja, ha az első két számjegy egyenlő AMEX 1,
hol itt, azt látjuk, hogy AMEX 1., mint egy a spec, 34.
És mi is hasonlítani a 2 AMEX, ami 37.
És a hitelkártya számát hossza egyenlő a várt American Express
névjegykártya hossza, akkor mi is nyomtat American Express.
>> Majd egy hasonló dolog a Visa.
Az első két számjegy kell többnek lennie, vagy egyenlő, mint 40, vagy kisebb,
vagy egyenlő, mint 49.
Ezek jelentik érvényes Visa kártyákat.
És a hossza egyenlő kell, hogy Visa hossza 1 vagy Visa Hossza 2.
És így a hosszúnak kell lennie, vagy 13 vagy 16 számjegy hosszú.
>> És végül a MasterCard, hogy ez hasonló a Visa, hogy az első két
számjegy kell, hogy legyen egy bizonyos tartomány, és a hosszúság
pontosan 16 számjegy.
Tehát, ha minden ilyen esetben tart, majd Az első esetben, akkor nyomtasson AMEX.
Ha ebben az esetben teljesül, akkor nyomtasson Visa.
Ha ebben az esetben érvényes, fogunk nyomtat MasterCard.
>> De ha egyik sem ezek tart, még akkor is ha a checksum érvényes volt,
még nyomtatni érvénytelen.
Mert ez nem egy az ilyen típusú kártyák.
A nevem Rob, és remélem, találta hitel érdekes.