Rob BOWDEN: Hi, Ako Rob. At Umaasa ako na sinisingil sa iyo up para sa kredito. Kaya unang bagay na kailangan naming gawin ay humiling ng credit card numero mula sa user. Dito, ginagamit namin getLongLong. Maaari mo na ginagamit din getString, ngunit sa kasong iyon, kailangan mo upang suriin na walang mga hindi-pang-numero character sa string. Kaya gagamitin namin getLongLong. Tandaan na hindi mo maaaring gamitin ang isang bagay tulad ng getInt, dahil ang bilang ay magiging masyadong malaki upang magkasya sa isang integer. Sa sandaling mayroon namin ang dami na, kami makikita dito ito habang loop. Kaya ito habang loop ay pagpapatupad Algorithm Luhn na sa iyo makita sa pset spec. At talagang ito ay pagpunta upang maging isang bit matalino. Kaya sa mga pset spec, napansin na ang Mga hakbang One at Dalawang ay hiwalay. Muna namin pumunta sa ibabaw ng buong credit card numero, naghahanap para sa bawat iba pang mga karakter na nagsisimula mula sa pangalawang sa huling character, at multiply ang mga ito at pagdaragdag ng lahat ng mga digit. Pagkatapos matapos na, idagdag kami sa lahat ng iba pang mga numero. Kaya sa halip ng paggawa sa mga nasa dalawang hiwalay na mga hakbang, kami ay pagpunta sa pagsamahin ang mga ito sa isa iteration sa ibabaw ng buong numero ng credit card. Dito, makikita natin int kuprum digit Kapantay numero ng credit card, mod 10. Ano ang numero ng credit card mod 10 ginagawa? Ito ay nagbibigay sa amin ng huling digit sa buong numero. Kaya tandaan na kung hinati namin ang Numero ng hanggang sa 10, pagkatapos ay ang natitira ay magiging kahit ano na ang huling digit ay. 23 na hinati sa 10, ang natitira ay magiging 3. Kaya ang huling digit, ngayon dito, makikita natin kami ay sumasanga sa mult sa pamamagitan ng 2. Kaya kung ano kami ay pagpunta sa gumagamit mult sa pamamagitan ng 2 para ay differentiating sa pagitan ng isa sa mga "bawat iba pang mga numero mula sa ang ikalawang digit na "numero. Mult sa pamamagitan ng 2 ay pagpunta upang simulan out bilang hindi totoo, simula ng huling digit na dapat hindi ituring na mula sa pangalawa sa huling digit. Kaya pagkatapos ay sa dulo ng ito para sa loop, namin makita na kami ay pagpunta upang baguhin ito mula sa hindi totoo sa true. Sa susunod na pag-ulit ng para sa loop, ito ay pagpunta sa itinuturing na tunay hanggang sa dulo, kapag baguhin namin ito mula totoo sa hindi. Dahil pagkatapos kami ay magiging sa ikatlong sa huling digit, na kung saan ay hindi isa sa mga digit na dapat naming i-multiply sa pamamagitan ng 2. Kaya kung mangyari ba naming maging sa isa sa mga digit na gusto naming i-multiply sa pamamagitan ng 2, nakikita namin kami ay pagdaragdag sa aming checksum. At dito, ginagamit namin ang tatluhan operator sa isang beses muli maging isang bit matalino. Kaya kung kuprum digit Mas mababa sa 5, pagkatapos maaari naming lamang gawin kuprum beses digit 2. Iyon ay simple. Kung ito ay 1, pagkatapos ay gusto naming idagdag 2. Kung ito ay 2, gusto naming idagdag 4. Kung ito ay 4, gusto naming idagdag 8. Kaya kung ano ang mga espesyal na tungkol sa 5? Well, 5 beses 2 ay 10. At tandaan mula sa pset spec na gusto naming idagdag ang mga digit ng numero beses 2, at hindi ang beses na numero 2 mismo. Kaya kung ang orihinal na numero ay 7, 7 beses 2 ay 14. Gusto naming magdagdag ng 1 plus 4 sa dami, hindi 14. Kaya dito, kung ang bilang na ito ay 5 o mas mataas, kung ano ang aming ginagawa ay kuprum digit 2 beses minus 9. At kung sa tingin mo tungkol sa na, 5 beses 2 ay 10. At kaya kami nagdadagdag ka ng 1, na kung saan ay 10 minus 9. At 6 beses 2 ay 12. Kaya namin idinadagdag 3, na 12 minus 9. At na gumagana para sa lahat ng mga numero. Kaya ang ginagawa namin idinadagdag sa aming checksum. At ito pa ay kung ano ang paghawak ng Hakbang Dalawang ng algorithm Luhn, na lamang ang pagdagdag ng mga digit na kung hindi ito mangyari upang maging isa sa mga bawat iba pang mga numero. Kaya sa sandaling mayroon kaming na, ito ay pinapanatiling track ng unang dalawang mga character ng ang numero ng credit card, ang unang dalawang mga digit, dahil sa huli kami ay pagpunta sa nais na gumamit na pababa dito upang i-verify, lahat ng karapatan, isang Visa ay may upang simulan ang may ito, at isang pangangailangan American Express na magsimula sa mga ito, at iba pa. Panghuli, mayroon kaming credit card numero ay katumbas ng credit card numero na hinati sa pamamagitan ng 10. Bakit ang gagawin namin na? Well, pinanghahawakan lang namin ang huling digit. Paghahati sa pamamagitan ng 10 ay shift ang buong numero sa ibabaw. Kaya ngayon kapag loop namin pabalik, hindi namin pagpunta sa ma-paghawak ng mga pangalawa sa huling digit. Pagkatapos kapag pindutin namin ito muli, kami ay pagpunta upang i-cut-off ang ikalawang kailangang magtagal digit na, loop pabalik, at pangasiwaan ang mga third kailangang magtagal digit, at iba pa, hanggang sa ang numero naabot ng 0, kung saan punto masira namin out sa habang loop. Pinananatili namin ang din ang track ng kredito haba numero ng card, dahil iyon ang mahalaga upang makilala kung ito ay ang isang numero ng wastong credit card. Kaya ngayon, sa sandaling kinakalkula namin ang checksum, maaari naming matukoy kung ito ay isang wastong card. Ang checksum mod 10 ay bahagi ng algorithm Luhn ni. Kung checksum mod 10 babalik ang isang bagay non-zero, pagkatapos ito ay nagbabalik ng tunay, sa kasong ito, ang bilang Dapat na wasto. Kung hindi man, kung checksum mod 10 ay 0, pagkatapos ay maaari naming magpatuloy. Ito malaki pa kung maganda ang sinasabi, kung ang unang dalawang digit ay pantay-pantay sa AMEX 1, kung saan up dito, makikita natin na AMEX 1, bilang bawat ang spec, ay 34. At gagamitin din namin ihambing ito sa AMEX 2, na kung saan ay 37. At ang haba numero ng credit card ay katumbas sa inaasahang American Express haba card, pagkatapos ng aming makakaya i-print ang American Express. Gagawin namin ang isang katulad na bagay gamit ang Visa. Kailangan Ang unang dalawang digit na maging mas malaki mababa sa o patas sa 40, o mas mababa mababa sa o patas sa 49. Yaong kumakatawan wastong Visa card. At ang haba ay kailangang maging katumbas ng Visa Haba ng 1 o Visa Haba ng 2. At kaya dapat na alinman ang haba 13 o 16 digit ang haba. At sa wakas ay may MasterCard, ito ay katulad ng Visa, na ang unang dalawang kailangan digit na maging sa isang tiyak na hanay, at ang haba kinakailangan na eksaktong 16 digit. Kaya kung ang alinman sa mga kasong iyon pindutin nang matagal, pagkatapos ay sa sa unang kaso, bibigyan namin ng print AMEX. Kung hold kasong ito, aming i-print ang Visa. Kung hold kasong ito, kami ay i-print ang MasterCard. Ngunit kung wala sa mga pindutin nang matagal, kahit na kung ang checksum ay wasto, i-print pa rin namin hindi wasto. Dahil ito ay hindi isa sa mga uri ng mga baraha. Ang pangalan ko ay Rob, at Umaasa ako sa iyo nahanap credit kawili-wiling.