>> ROB BOWDEN: Sveiki, es esmu Rob.
Un es ceru, ka jums jāmaksā up kredītu.
Tātad pirmā lieta, kas mums jādara ir pieprasīt kredītkarti
numuru no lietotāja.
Lūk, mēs izmantojam getLongLong.
Jūs varētu izmantot arī getString, bet tādā gadījumā, jūs nepieciešams, lai pārbaudītu
ka nebija ne-ciparu rakstzīmes virknē.
Tāpēc mēs izmantosim getLongLong.
>> Atcerieties, ka jūs nevarat izmantot kaut ko piemēram getInt, jo skaitu būs
pārāk liels, lai ietilptu veselam skaitlim.
Pēc tam, kad mēs esam šo numuru, mēs skatiet šeit to, kamēr cilpa.
Tātad šis kamēr cilpa īsteno Luhn algoritms, kas jums
redzēt PSET spec.
>> Un tas tiešām notiek būt mazliet gudrs.
Tātad PSET spec, ievērosiet, ka Soļi pirmās un otrās ir atsevišķi.
Mēs vispirms iet pāri visam kredītkarti numuru, meklējot katru otro
raksturu, sākot no otrā līdz pēdējā raksturs, un reizinot tos
un pievienojot visus ciparus.
Tad pēc tam mēs pievienot visiem citiem cipariem.
>> Tā vietā, lai darīt tiem divos atsevišķi soļi, mēs ejam, lai apvienotu
tos vienā atkārtojumā vairāk Visa kredītkartes numuru.
Šeit mēs redzam, int cur ciparu vienāds kredītkartes numurs, mod 10.
Kas ir kredītkartes numurs mod 10 dara?
Tas dod mums pēdējo ciparu in vesels skaitlis.
Tātad, atcerieties, ka, ja mēs sadalīta numuru uz augšu par 10, tad atlikušais
varētu būt kāds, kas pēdējais cipars ir.
23 dalīts ar 10, pārējais būs 3.
>> Tātad pēdējais cipars, tagad šeit mēs redzam mēs esam filiāles uz mult ar 2.
Tātad, ko mēs gribam būt, izmantojot mult ar 2, lai ir arī nošķirt
viens no "katru otro numuru no otrais cipars "numurus.
Mult ar 2 gatavojas sākt no kā nepatiesa, jo pēdējais cipars nevajadzētu
var uzskatīt no otrā līdz pēdējai zīmei.
>> Tātad beigās šis cilpas, mēs redz, ka mēs ejam to mainīt
no viltus patiesai.
Par nākamo atkārtojuma par cilpas, tas būs uzskatīt taisnība līdz brīdim,
beigās, kad mēs mainīt to no taisnība nepatiess.
Jo tad mēs būsim uz trešā līdz Pēdējā zīme, kas nav viens no
cipari, ka mums vajadzētu reizināt ar 2.
>> Tātad, ja mēs notikt būt par vienu no tiem cipari, ko mēs vēlamies, lai reizināt ar 2,
mēs redzam, mēs esam pievienojot mūsu kontrolsumma.
Un šeit mēs esam, izmantojot trīskāršo operators vienreiz
atkal mazliet gudrs.
Tātad, ja cur ciparu ir mazāks par 5, tad mēs varam tikai izdarīt ar pašreizējo ciparu reizes 2.
Tas ir vienkārši.
Ja tas ir 1, tad mēs vēlamies, lai pievienotu 2.
Ja tas ir 2, mēs vēlamies, lai pievienotu 4.
Ja tas ir 4, mēs vēlamies, lai pievienotu 8.
>> Tātad, kas ir īpašs par 5?
Nu, 5 reizes 2 ir 10.
Un atcerieties, no PSET spec ka mēs vēlamies, lai pievienotu ciparus
numurs reizes 2, un nevis numurs reizes 2 pati.
Tātad, ja sākotnējais numurs ir 7, 7 reizes 2 ir 14.
Mēs vēlamies, lai pievienotu 1 plus 4 skaitam, kas nav 14.
>> Tātad, šeit, ja numurs ir 5 vai lielāks, tas, ko mēs darām, ir cur ciparu
reizes 2 mīnus 9.
Un, ja jūs domājat par to, ka, 5 reizes 2 ir 10.
Un tāpēc mēs esam pievienojot 1, kas ir 10 mīnus 9.
Un 6 reizes 2 ir 12.
Tāpēc mēs esam pievienojot 3, kas ir 12 mīnus 9.
Un tas darbojas visās numuriem.
>> Tāpēc, ka tas, ko mēs esam pievienojot mūsu kontrolsumma.
Un tas vēl ir, kas ir apstrādes solis Divi no Luhn algoritms, kas ir tikai
pievienojot ciparu, ja tas nenotiek ir viens no katriem citiem cipariem.
Tātad, kad mums ir, ka tas ir tur dziesmu no pirmajiem diviem burtiem
kredītkartes numuru, pirmie divi cipari, jo mēs galu galā iet
vēlas izmantot, ka šeit lejā, lai pārbaudītu, labi, Visa ir jāsāk
ar šo, un American Express vajadzībām sākt ar to, un tā tālāk.
>> Visbeidzot, mēs kredītkarti skaits ir vienāds ar kredītkarti
numurs, dalīts ar 10.
Kāpēc mēs to darām?
Nu, mēs vienkārši apstrādā pēdējo ciparu.
Dalot ar 10 mainīs visu numuru pāri.
Tāpēc tagad, kad mēs cilpa atpakaļ, mēs esam tiks apstrādes
otrā līdz pēdējai zīmei.
Tad, kad mēs hit to vēlreiz, mēs ejam lai nogrieztu otro ilgs
ciparu, cilpa atpakaļ, un rīkoties trešais uz pēdējo ciparu, un tā tālāk, līdz brīdim, kad
skaits sasniedz 0, kurā brīdī mēs izkļūt no kamēr cilpa.
>> Mēs arī sekotu kredīta kartes numurs garums, jo tas ir
svarīgi atšķirt, vai tas ir derīga kredītkartes numuru.
Tāpēc tagad, kad mēs esam aprēķina kontrolsummu, mēs varam noteikt, vai tā
ir derīga karte.
Kontrolsumma mod 10 ir daļa gada Luhn algoritms.
Ja kontrolsumma mod 10 atgriežas kaut nav nulle, tad tas return true,
un šādā gadījumā numurs ir nederīgs.
>> Pretējā gadījumā, ja kontrolsumma mod 10 ir 0, tad mēs varam turpināt.
Šo lielo cits ja saka, ja pirmais divi cipari ir vienāds ar AMEX 1,
kur šeit, mēs redzam, ka AMEX 1, kā vienu spec, ir 34.
Un mēs arī salīdzināt to līdz AMEX 2, kas ir 37.
Un kredītkartes numurs garums vienāds ar paredzamo American Express
card garuma, tad mēs varam drukāt American Express.
>> Mēs darīsim līdzīga lieta ar Visa.
Pirmie divi cipari ir jābūt lielākam par vai vienāds ar 40, vai mazāk
par vai vienāds ar 49.
Tie pārstāv derīga vīza kartes.
Un tās garums ir vienāds ar Visa Garums 1 vai Visa Garums 2.
Un tā garumam jābūt vai nu 13 vai 16 cipariem.
>> Un, visbeidzot, ar MasterCard, tas ir līdzīgi Visa, ka pirmie divi
cipari nepieciešams būt pārliecināti, diapazona, un garums must
jābūt tieši 16 cipariem.
Tātad, ja kāds no šiem gadījumiem turēt, tad Pirmajā gadījumā mēs drukāt AMEX.
Ja šo lietu tur, mēs drukāt vīzu.
Ja šo lietu tur, mēs drukāt MasterCard.
>> Bet, ja neviens no tiem tur, pat ja kontrolsumma bija spēkā,
mēs joprojām drukāt nederīgs.
Tāpēc, ka tas nav viens no šie karšu veidiem.
Mans vārds ir Rob, un es ceru, ka jūs konstatēts kredītu interesanti.