ROB BOWDEN: Hi, jien Rob. U nispera li int mitlub up għall-kreditu. Allura l-ewwel ħaġa li rridu nagħmlu huwa jitlob lill-karta ta 'kreditu numru mill-utent. Hawnhekk, aħna qed jużaw getLongLong. Inti tista użaw ukoll getString, iżda f'dak il-każ, youd bżonn li jiċċekkja li ma kienx hemm non-numeriku karattri fit-sekwenza. Allura aħna ser tuża getLongLong. Ftakar li inti ma tistax tuża xi ħaġa bħal getInt, peress li n-numru se jkun kbar wisq biex tajbin fil integer. Ladarba għandna dak in-numru, aħna tara hawn dan loop waqt. Allura dan loop filwaqt li qed jimplimenta Algoritmu Luhn li inti tara fil-spec pset. U huwa attwalment għaddejjin li jkun daqsxejn għaqlija. Allura fil-spec pset, avviż li Passi Wieħed u Tnejn huma separati. Aħna l-ewwel jmorru fuq il-karta ta 'kreditu kollu numru, tfittex kull oħra karattru li jibdew mit-tieni sa karattru aħħar, u multiplikazzjoni minnhom u żżid l-ċifri. Imbagħad wara dan, aħna żid fl kollha tal-numri l-oħra. Allura minflok tagħmel dawk iż-żewġ passi separati, aħna qed tmur biex jgħaqqdu minnhom fil iterazzjoni waħda fuq l- numru kollu karta ta 'kreditu. Hawnhekk, naraw int ugwali ċifri kur numru tal-karta ta 'kreditu, mod 10. X'inhu numru tal-karta ta 'kreditu mod 10 tagħmel? Huwa tagħtina l-aħħar ċifri fin-numru sħiħ. Mela ftakar li jekk aħna maqsuma l- jinnumera up b'10, allura l-bqija ikun x'ikun li l-aħħar ċifra hija. 23 maqsum f'10, il- bqija se jkun ta '3. Allura l-aħħar ċifri, issa hawn, naraw aħna qed fergħat fuq mult bi 2. Allura dak li aħna qed tmur biex tkun qed tuża mult bi 2 għal huwa distinzjoni bejn wieħed mill-"kull numri oħra minn it-tieni "numri ċifri. Mult minn 2 se jibdew bħala falza, mill-aħħar ċifri ma għandhomx jiġu kkunsidrati mill- tieni li l-aħħar ċifri. Mela allura fl-aħħar ta 'dan għal loop, aħna tara li aħna qed tmur biex tbiddel dan minn falza vera. Fuq il-iterazzjoni li jmiss tal-għall-loop, li għaddej biex kkunsidrata veru sakemm l-aħħar, meta nagħmlu l-bidla minn vera għall falza. Għaliex allura aħna ser tkun fuq it-tielet biex aħħar ċifri, li mhix waħda mill- ċifri li għandna jimmultiplikaw bi 2. Allura jekk aħna jiġri li jkun fuq waħda minn dawk numri li aħna rridu li jimmultiplikaw bi 2, naraw aħna qed żżid checksum tagħna. U hawn, aħna qed tuża l- operatur ternarji għal darba jerġa 'jkun daqsxejn għaqlija. Mela jekk figuri cur huwa inqas minn 5, allura nistgħu biss tagħmel żminijiet ċifri kur 2. Li sempliċi. Jekk huwa 1, imbagħad irridu żid 2. Jekk huwa 2, irridu żid 4. Jekk huwa 4, irridu żid 8. Allura x'hemm speċjali madwar 5? Well, 5 darbiet 2 huwa 10. U ftakar mill-spec pset li irridu li jżidu l-ċifri tal- numru ħinijiet 2, u mhux il- ħinijiet numri 2 innifsu. Allura jekk in-numru oriġinali huwa 7, 7 darbiet 2 huwa 14. Aħna rridu li żid 1 plus 4 l-għadd, mhux 14. Allura hawnhekk, jekk in-numru 5 jew ikbar, dak li aħna qed tagħmel qed ċifri cur drabi 2 minus 9. U jekk taħseb dwar dan, 5 darbiet 2 huwa 10. U hekk aħna qed żżid 1, li hija 10 minus 9. U 6 darbiet 2 huwa 12. Allura aħna qed żżid 3, li huwa 12 minus 9. U li taħdem għall-numri kollha. Allura dak hu li aħna qed żżid li checksum tagħna. U dan ieħor huwa dak immaniġġjar Step Tnejn mill algoritmu Luhn, li huwa biss żżid il-figuri jekk ma jiġri li jkun wieħed mill-kull numri oħra. Allura ladarba għandna dan, din hija żamma track mill-ewwel żewġ karattri tal- numru tal-karta ta 'kreditu, l-ewwel tnejn ċifri, peress li aħna qed eventwalment se li jridu jużaw din stabbiliti hawn biex jivverifika, id-dritt, Viża għandha tibda Ma 'dan, u bżonnijiet American Express li tibda ma 'dan, u l-bqija. Fl-aħħarnett, nagħmlu karta ta 'kreditu numru ugwali karta ta 'kreditu numru maqsum f'10. Għalfejn nagħmlu dan? Well, aħna biss mmaniġġjati l-aħħar ċifri. Billi tiddividi 10 ser jinxteħet in-numru kollu fuq. Allura issa meta aħna loop lura, aħna qed ser ikunu timmaniġġja l- tieni li l-aħħar ċifri. Imbagħad meta aħna hit din darb'oħra, aħna qed tmur biex jinqata 't-tieni għall-aħħar figuri, loop lura, u jimmaniġġjaw it-tielet għall-aħħar ċifri, u tkompli hekk, sakemm l- numru jilħaq 0, f'liema punt aħna break out tal-linja waqt. Aħna wkoll iżżomm rekord tal-kreditu tul numru tal-karta, peress li l- importanti li ssir distinzjoni jekk huwa numru tal-karta ta 'kreditu valida. Allura issa, ladarba aħna ħadthom kkalkulat l- checksum, nistgħu jiddetermina jekk hija karta valida. Il-mod checksum 10 hija parti tal algoritmu Luhn tal. Jekk checksum mod 10 prospetti xi ħaġa mhux żero, mela dan se jirritornaw veru, f'liema każ, in-numru għandu jkun invalidu. Inkella, jekk checksum mod 10 huwa 0, allura nistgħu tkompli. Dan big inkella jekk huwa qal, jekk l-ewwel żewġ ċifri huma ugwali għal AMEX 1, fejn up hawn, naraw li AMEX 1, kif fis-spec, huwa 34. U aħna ser wkoll tqabbilha biex AMEX 2, li huwa 37. U n-numru tul karta ta 'kreditu ugwali għall-American Express mistenni tul card, allura nistgħu print American Express. Aħna ser tagħmel xi ħaġa simili ma 'Visa. L-ewwel żewġ ċifri għalfejn ikun ikbar minn jew ugwali għal 40, jew anqas minn jew ugwali għal 49. Dawk jirrappreżentaw cards viża valida. U t-tul jeħtieġ li jkun ugwali għal Visa Tul 1 jew Tul Visa 2. U għalhekk it-tul għandhom ikunu jew 13 jew 16 numri fit-tul. U fl-aħħarnett ma MasterCard, huwa simili għal Visa, li l-ewwel tnejn numri jeħtieġ li tkun ċerta firxa, u-most tul tkun eżattament 16 numri. Mela jekk xi waħda minn dawk il-każijiet istiva, imbagħad fl- l-ewwel każ, aħna ser jistampaw AMEX. Jekk il-każ istivi, aħna ser jistampaw Visa. Jekk il-każ istivi, aħna ser print MasterCard. Imma jekk ebda waħda minn dawn istiva, anke jekk il-checksum kien validu, aħna xorta print invalida. Għaliex mhuwiex wieħed ta ' dawk it-tipi ta 'karti. Jisimni Rob, u nispera li inti interessanti kreditu misjuba.