>> ROB BOWDEN: Tere, ma olen Rob.
Ja ma loodan, et sa oled laetud up laenu.
Nii et esimene asi, mida me peame tegema, on taotleda krediitkaarti
number kasutaja.
Siin me kasutame getLongLong.
Sa oleks võinud ka kasutatud getString, kuid Sel juhul sa pead kontrollima
et ei ole mitte-numbriline märkide string.
Nii me kasutame getLongLong.
>> Pidage meeles, et te ei saa kasutada midagi nagu getInt, sest number on
liiga suur, et mahtuda täisarv.
Kui meil on see number, et me vaata siin samas silmus.
Nii et see, kui silmus on rakendamisel Luhn algoritm, et sa
näha pset spec.
>> Ja see tegelikult toimub olla natuke tark.
Nii pset spec, märkate, et Esimest ja teist sammu on eraldi.
Kõigepealt minge kogu krediitkaardi number, otsin iga teine
iseloomu alates teisest kuni viimane märk ja korrutades neid
ja lisades kõik numbrit.
Siis pärast seda, lisame sisse kõik muud numbrit.
>> Selle asemel teeb need kaks eraldi samme, me ühendada
need ühte iteratsiooni jooksul kogu krediitkaardi numbrit.
Siin näeme, int viim kohaline võrdsete krediitkaardi number, mod 10.
Mida krediitkaardi number mod 10 teed?
See annab meile viimane number kogu number.
Seega pidage meeles, et kui me jagatud arvu kuni 10, siis ülejäänud
oleks mida iganes see viimane number on.
23 jagatud 10, Ülejäänud on 3.
>> Nii viimast numbrit, nüüd siin näeme, me hargnevate on mult 2.
Niisiis, mida me ei kavatse olla kasutades mult 2 on eristades
üks "iga teine ​​numbrite teine ​​number "numbrid.
Mult 2 läheb alguses on vale, sest viimane number ei tohiks
kaaluda alates eelviimane number.
>> Nii siis lõpuks see silmus, me näha, et me ei kavatse seda muuta
alates false true.
Järgmisel iteratsiooni loop, see läheb pidada tõelisteks kuni
aasta lõpuks, kui me muudame see tõsi, et vale.
Sest siis me oleme kolmandal kuni viimane number, mis ei ole üks
numbrit, et me peaksime korrutada 2.
>> Nii et kui me juhtumisi on üks neist numbrit, et me tahame korrutada 2,
näeme me liidame meie kontrollsumma.
Ja siin me kasutame ternaarse operaator kord
jälle natuke tark.
Nii et kui krants number on väiksem kui 5, siis saame lihtsalt teha viim kohaline korda 2.
See on lihtne.
Kui see on 1, siis tahame, et lisada 2.
Kui see on 2, tahame lisada 4.
Kui see on 4, tahame lisada 8.
>> Mis on eriline 5?
Noh, 5 korda 2 on 10.
Ja mäletan pset spec et tahame lisada numbrit
number korda 2, ja mitte number korda 2 ise.
Nii et kui algne number on 7, 7 korda 2 on 14.
Me tahame lisada 1 pluss 4 Lisa number ei 14.
>> Nii siin, kui number on 5 või suurem, mida me teeme on viim kohaline
korda 2 miinus 9.
Ja kui sa arvad, et 5 korda 2 on 10.
Ja nii me liidame 1, mis on 10 miinus 9.
Ja 6 korda 2 on 12.
Nii et me liidame 3, mis on 12 miinus 9.
Ja see töötab kõik numbrid.
>> Nii see on, mida me liidame meie kontrollsumma.
Ja see teine ​​on see, mis on käitlemiseks Step Kaks Luhn algoritm, mis on vaid
Lisades kohaline kui seda ei juhtu üheks igal teisel numbrit.
Nii et kui meil on, et see hoiab lugu kahest esimesest tegelased
krediitkaardi number, millest kaks esimest numbrit, kuna me lõpuks läheb
soovite kasutada, et siia alla, et kontrollida, Olgu, Visa on alustada
Selle ja American Express vajadustele alustada seda ja nii edasi.
>> Lõpuks teeme krediitkaardi nr võrdub krediitkaardi
number jagatud 10.
Miks me seda teeme?
Noh, me lihtsalt käsitseda viimast numbrit.
Jagades 10 nihkub kogu number üle.
Nüüd, kui me loop tagasi, me oleme kavatse käitlemise
eelviimane number.
Siis, kui me tabanud seda jälle, me katkestas eelviimaseks
kohaline, loop tagasi ja käitlema kolmas kesta kohaline, ja nii edasi, kuni
number jõuab 0, misjärel me välja murda samas silmus.
>> Me ka jälgida, krediit kaardi numbri pikkus, sest see on
oluline eristada, kas see kehtiva krediitkaardi number.
Nüüd, kui oleme välja arvutanud, kontrollsumma, saame otsustada, kas ta
on kehtiva kaardi.
Kontrollsumma mod 10 on osa kohta Luhn algoritm.
Kui kontrollsumma mod 10 naaseb midagi nullist, siis see tagastab true,
mispuhul arvu peab olema kehtiv.
>> Vastasel juhul, kui kontrollsumma mod 10 on 0, siis saame jätkata.
See suur veel, kui ütleb, kui esimene kaks numbrit on võrdsed AMEX 1,
kui siin, siis näeme, et AMEX 1, kui ühe spec, on 34.
Ja me ka võrrelda seda et AMEX 2, mis on 37.
Ja krediitkaardi number pikkus on võrdne oodatava American Express
kaardi pikkus, siis saame prindi American Express.
>> Me teeme sarnast asja Visa.
Esimesed kaks numbrit peavad olema suurem kui või võrdne 40 või vähem
kui või võrdne 49.
Need kujutavad kehtiv Visa kaarte.
Ja pikkus peab olema võrdne Visa pikkus 1 või Visa pikkus 2.
Ja nii pikkus peab olema kas 13 või 16 numbrit.
>> Ja lõpuks MasterCard, see on sarnaseid Visa, et kaks esimest
numbrit peavad olema teatud vahemik ja kestus peab
olema täpselt 16 numbrit.
Nii et kui mõni neist juhtudest hoida, siis Esimesel juhul me trükime AMEX.
Kui sellisel juhul hoiab, me printida Visa.
Kui sellisel juhul omab meiepoolsete prindi MasterCard.
>> Aga kui keegi neid hoida, isegi kui kontrollsumma oli kehtiv,
me ikka printida kehtetu.
Sest see ei ole üks seda tüüpi kaarte.
Minu nimi on Rob ja ma loodan, et sa leidis krediidi huvitav.