>> ROB BOWDEN: Ola, eu son Rob.
E eu espero que cobra up para o crédito.
Entón o primeiro que temos que facer é solicitar a tarxeta de crédito
número do usuario.
Aquí, estamos usando getLongLong.
Tamén podería usar getString, pero nese caso, ten que comprobar
que non houbese non numérica caracteres na cadea.
Entón imos usar getLongLong.
>> Lembre que non pode usar algo como getInt, xa que o número será
demasiado grande para caber nun enteiro.
Unha vez que temos ese número, nós ver aquí este loop while.
Polo tanto, este loop while está implementando Algoritmo de Luhn que
ver na especificación pset.
>> E iso está realmente a suceder a ser un pouco intelixente.
Entón, na especificación pset, teña en conta que Etapas un e dous son separados.
En primeiro lugar, pasar por riba de todo a tarxeta de crédito número, mirando para todos os demais
personaxe a partir do segundo para último carácter, e multiplicándose os
e engadindo as díxitos.
Entón, despois diso, nós engadimos en todos os outros díxitos.
>> Entón, en vez de facer os dous etapas separadas, imos combinar
los nunha iteración sobre o número completo da tarxeta de crédito.
Aquí vemos int iguais díxitos actual número da tarxeta de crédito, mod 10.
Cal é o número da tarxeta de crédito mod 10 está facendo?
Está nos dando o último díxito o número enteiro.
Entón lembre de que se dividiu o número por 10, entón o resto
sería todo o que o último díxito é.
23 dividido por 10, o restante será 3.
>> Así, o último díxito, agora aquí vemos estamos ramificados en gráfica por 2.
Entón, o que nós imos estar usando gráfica por 2 para diferenciarse
un dos "todos os outros números de o segundo "números.
Gráfica por 2 comezará como falsos, xa que o último díxito non debe
ser considerada a partir do segundo para último díxito.
>> Entón, a continuación, a finais deste loop, nós ver que nós imos cambiar isto
de teito para verdadeiro.
Na seguinte iteración do bucle para, vai considerada verdadeira ata
Ao final, cando cambiamos que de certo para falso.
Porque, entón, estaremos no terceiro para último díxito, o que non é un dos
díxitos que debemos multiplicar por 2.
>> Entón, se ocorrer de estar nun dos díxitos que queremos multiplicar por 2,
vemos que estamos aumentando a nosa suma de comprobación.
E aquí, nós estamos usando o operador ternário para xa
novo ser un pouco intelixente.
Polo tanto, se actual díxito é inferior a 5, a continuación, podemos só facer veces díxitos actual 2.
Isto é simple.
De ser 1, entón queremos engadir 2.
De ser 2, queremos engadir 4.
Se é 4, queremos engadir 8.
>> Entón, o que hai de especial sobre 5?
Ben, 5 veces 2 é 10.
E lembre de que a especificación pset queremos engadir os díxitos do
veces o número 2, e non o número de veces en si 2.
Así, se o número orixinal é de 7, 7 veces 2 é 14.
Queremos engadir 1 máis 4 ao número, non 14.
>> Entón, aquí, se o número for 5 ou superior, o que estamos facendo é o díxito cur
veces 2 menos 9.
E se pensar sobre iso, 5 veces 2 é 10.
E así estamos engadindo 1, que é 10 menos 9.
E 6 veces 2 é 12.
Entón, nós estamos engadindo 3, que é 12 menos 9.
E iso funciona para todos os números.
>> Entón é iso que nós estamos engadindo para a suma de verificación.
E esa outra cousa é o que está lidando Paso Dous dos algoritmo de Luhn, que é só
engadindo o díxito, se iso non acontecer ser un dos outros díxitos cada un.
Así, unha vez que temos de que, este é manter ruta dos dous primeiros caracteres
o número da tarxeta de crédito, os dous primeiros díxitos, xa que estamos indo finalmente
querer usar isto aquí abaixo para comprobar, todo ben, a Visa ten que comezar
con iso, e un necesidades American Express comezar con este, e así por diante.
>> Finalmente, facemos tarxeta de crédito número é igual a tarxeta de crédito
número dividido por 10.
Por que facemos isto?
Ben, nós só colleu o último díxito.
Dividindo por 10 vai cambiar o número enteiro máis.
Entón agora cando volta ao principio, estamos será o manexo
segundo para último díxito.
Entón, cando se loita de novo, nós imos para cortar o penúltimo lugar
díxito, de volta loop, e xestionar a terceira ao último díxito, e así por diante, ata que o
número chega a 0, en que punto que saír do loop while.
>> Estamos tamén mantendo o control do crédito lonxitude número da tarxeta, xa que é
importante distinguir se é un número de tarxeta de crédito válido.
Entón, agora, unha vez que xa calculou o checksum, podemos determinar se
é unha tarxeta válida.
O mod suma 10 é parte do algoritmo de Luhn.
Se de checksum mod 10 volve algo distinto de cero, entón iso vai voltar true,
caso en que, o número debe ser válido.
>> En caso contrario, súmase mod 10 é 0, entón podemos continuar.
Este gran cousa se está a dicir, o primeiro dous díxitos son iguais a American Express 1,
onde ata aquí vemos que AMEX 1, de acordo coa especificación, é de 34.
E nós tamén imos comparalos-lo a American Express 2, que é 37.
E a lonxitude do número de tarxeta de crédito é igual ao esperado American Express
lonxitude tarxeta, entón podemos imprimir American Express.
>> Imos facer unha cousa semellante coa Visa.
Os dous primeiros díxitos Debe ser maior que ou igual a 40, ou menos
que ou igual a 49.
Aqueles representan tarxetas Visa válidos.
E a lonxitude debe ser igual Visa ou Visa Lonxitude 1 Lonxitude 2.
E así, a lonxitude debe ser tanto 13 ou 16 díxitos.
>> E, finalmente, coa MasterCard, é semellante ao visto, que os dous primeiros
díxitos precisan estar nun certo variedade, e a lonxitude debe
ser exactamente 16 díxitos.
Así, se calquera destes casos soster, entón en No primeiro caso, imos imprimir AMEX.
Se este caso ten, imos imprimir Visa.
Se este caso ten, imos imprimir MasterCard.
>> Pero se ningún dos soster, aínda O checksum é válido,
aínda imprimir válido.
¿Por que non é un dos estes tipos de tarxetas.
O meu nome é Rob, e eu espero que penso interesante de crédito.