>> ROB BOWDEN: Hei, olen Rob.
Ja toivon veloitettavassa varten luottoa.
Joten ensimmäinen asia, joka meidän täytyy tehdä on pyytää luottokortin
numero käyttäjältä.
Täällä käytämme getLongLong.
Olisit voinut myös käyttää getString, mutta Siinä tapauksessa sinun täytyy tarkistaa
että ei ollut ei-numeerisia merkkejä merkkijonon.
Joten käytämme getLongLong.
>> Muista, että et voi käyttää jotain kuten getInt, koska numero on
liian suuri mahtumaan kokonaisluku.
Kun meillä on tuo numero, me läsnäolosta täällä kun silmukka.
Joten tämä while-silmukka toteuttaa Luhn algoritmi, että olet
nähdä PSET spec.
>> Ja se todella tapahtuu olla hieman ovela.
Joten PSET spec, huomaa, että Vaiheet yksi ja kaksi ovat erillisiä.
Me ensin mennä koko luottokortin numero, etsivät joka toinen
merkki alkaen toisesta Viimeisen merkin ja kertomalla ne
ja lisäämällä kaikki numerot.
Sitten sen jälkeen, lisäämme vuonna kaikki muut numerot.
>> Joten sen sijaan tehdä näiden kahden erillisiä vaiheita, aiomme yhdistää
ne yhdeksi iteraation yli koko luottokortin numeron.
Täällä näemme int nyk. numeroinen tasavertaisina luottokortin numero, mod 10.
Mikä on luottokortin numero mod 10 tekee?
Se antaa meille viimeisen numeron koko numero.
Joten muistakaa, että jos jaoimme numero ylös 10, sitten loput
olisi mitä se viimeinen numero on.
23 jaettuna 10, Loppuosa 3.
>> Joten viimeinen numero, nyt täällä, näemme olemme haarautumaa mult 2.
Joten mitä aiomme käyttää mult 2 varten on erotella
yksi "joka toinen numerot toinen numero "numeroita.
Mult 2 aikoo aloittaa kuin väärä, koska viimeinen numero ei pitäisi
ottaa huomioon jo toiseksi viimeisen numeron.
>> Joten sitten lopussa tämän silmukan, me nähdä, että aiomme muuttaa tätä
alkaen false totta.
Seuraavalla iterointia silmukan, se tulee pitää totena, kunnes
lopussa, kun muutamme se totta vääriä.
Koska silloin me olla kolmas viimeinen numero, joka ei ole yksi
numeroa että meidän pitäisi moninkertaistaa 2.
>> Joten jos satumme olemaan yksi niistä numeroa, jotka haluamme kerrotaan 2,
näemme lisäämme meidän tarkiste.
Ja tässä, käytämme ternäärinen toimijaa kerran
jälleen olla hieman ovela.
Joten jos nyk. luku on alle 5, niin voimme vain tehdä nyk. numeroinen kertaa 2.
Se on yksinkertainen.
Jos se on 1, niin haluamme lisätä 2.
Jos se on 2, haluamme lisätä 4.
Jos se on 4, haluamme lisätä 8.
>> Joten mitä erikoista noin 5?
No, 5 kertaa 2 on 10.
Ja muistan PSET spec että haluamme lisätä numeroa
numero kertaa 2, eikä numero kertaa 2 itse.
Joten jos alkuperäinen luku on 7, 7 kertaa 2 on 14.
Haluamme lisätä 1 plus 4 lukumäärään, ei 14.
>> Joten tässä, jos numero on 5 tai suurempi, mitä teemme on nyk. numeroinen
kertaa 2 miinus 9.
Ja jos ajattelee, että 5 kertaa 2 on 10.
Ja niin me lisäät 1, joka on 10 miinus 9.
Ja 6 kertaa 2 on 12.
Joten olemme lisäämällä 3, joka on 12 miinus 9.
Ja joka toimii kaikki numerot.
>> Niin, että mitä me lisäät meidän tarkiste.
Ja tämä muuten on mitä käsittely Vaihe Kaksi Luhn algoritmi, joka on vain
lisäämällä numeron, jos se ei tapahdu olla yksi joka toinen numeroa.
Joten kun meillä on, että tämä on pitää kirjaa kaksi ensimmäistä merkkiä
luottokortin numero, kaksi ensimmäistä numeroa, koska olemme lopulta menossa
haluta käyttää, että tänne tarkistaa, okei, Visa on aloitettava
tämän, ja American Express tarpeisiin aloittaa tämän, ja niin edelleen.
>> Lopuksi teemme luottokortilla määrä vastaa luottokortin
määrä jaettuna 10.
Miksi teemme niin?
No, me vain käsitellä viimeisen numeron.
Jakamalla 10 siirtyy koko numeron yli.
Joten nyt kun silmukka takaisin, olemme aiotaan käsittely
toiseksi viimeisen numeron.
Sitten kun osuimme tätä uudelleen, aiomme katkaista toiseksi viimeinen
numeroinen, silmukka takaisin, ja käsitellä kolmannen kestämään numeron, ja niin edelleen, kunnes
määrä saavuttaa 0, missä vaiheessa rikomme ulos while-silmukka.
>> Olemme myös pitää kirjaa luotto kortin numero pituus, koska se on
tärkeää erottaa onko se voimassa olevan luottokortin numeron.
Joten nyt, kun olemme laskettu tarkiste, voimme selvittää, onko se
on voimassa olevaa korttia.
Tarkiste mod 10 on osa of Luhn algoritmi.
Jos tarkiste mod 10 palaa jotain ei-nolla, niin tämä palaa totta,
jolloin määrä on virheellinen.
>> Muuten, jos tarkiste mod 10 on 0, niin voimme jatkaa.
Tämä iso if sanoo, jos ensimmäinen kaksi numeroa ovat yhtä AMEX 1,
jos tänne, näemme, että AMEX 1, kohti spec, on 34.
Ja me myös verrata sitä to AMEX 2, joka on 37.
Ja luottokortin numeron pituus on on yhtä suuri kuin odotettavissa American Express
kortti pituus, niin voimme tulostaa American Express.
>> Teemme samanlainen juttu Visa.
Kaksi ensimmäistä numeroa tarvitse olla suurempi tai yhtä suuri kuin 40, tai pienempi
tai yhtä suuri kuin 49.
Nämä edustavat voimassa Visa-kortteja.
Ja pituuden on oltava yhtä suuri kuin Visa Pituus 1 tai Visa Pituus 2.
Ja niin pituuden on oltava joko 13 tai 16 merkkiä pitkä.
>> Ja lopuksi MasterCard, se on samanlainen Visa, että kaksi ensimmäistä
numeroa täytyy olla tietyssä alue, ja pituuden on
täsmälleen 16 numeroa.
Joten jos jossain näistä asioista pitää, sitten Ensimmäisessä tapauksessa me tulostaa Amex.
Jos tapauksessa pätee, me tulostaa Visa.
Jos tapauksessa pitää käymme tulostaa MasterCard.
>> Mutta jos mikään näistä pidä, vaikka jos tarkistussumma oli voimassa,
me silti tulostaa kelpaa.
Koska se ei ole yksi näitä kortteja.
Nimeni on Rob, ja toivon, löytyi luottoa mielenkiintoinen.