ROB BOWDEN:嗨,我是罗布。 我希望你负责 了信贷。 我们必须这样做第一件事 被要求信用卡 从用户数。 在这里,我们使用getLongLong。 你可能也使用的getString,但 在这种情况下,你需要检查 有没有非数字 字符的字符串。 因此,我们将使用getLongLong。 请记住,你不能使用的东西 像调用getInt,由于数量将 太大,不适合在一个整数。 一旦我们有了这个数字,我们 在这里看到的这个while循环。 所以这个while循环执行 LUHN的算法,你 看到PSET规范。 它实际上会 是有点聪明。 所以在PSET规范,请注意 步骤一,二是分开的。 我们首先去了整个信用卡 数,寻找一切其他 字符从第二到开始 最后一个字符,再乘以他们 并且将所有的数字。 那么在这之后,我们在添加 所有的其他数字。 因此,而不是做那些两 独立的步骤,我们要结合 他们为一个迭代过 完整的信用卡号码。 在这里,我们看到的值。int cur位等于 信用卡号码,模10。 什么是信用卡号码 国防部10在做什么? 它给我们的最后一个数字 在整个号码。 所以请记住,如果我们分了 由10个数字了,那么剩下的 会是什么那最后一个数字是。 23除以10,则 剩下的将是3。 所以,最后一个数字,现在在这里,我们看到 我们通过2分支上多个。 因此,我们将要使用多个哪些 2用的区分 “每隔一个数字从一个 第二个数字“的数字。 多个由2即将开始作为 假的,因为最后一位数字不应该 被从所考虑的 倒数第二位。 所以后来在本月底for循环,我们 看到我们要改变这种 从假到真。 在fo​​r循环的下一次迭代, 它要考虑到真 最后,当我们改变 它真亦假。 因为那时我们将在第三至 最后的数字,这不是一个 数字,我们应该乘以2。 因此,如果我们碰巧是对其中的一个 我们要乘以2位数, 我们看到我们添加到我们的校验和。 在这里,我们使用了 三元运算符来一次 又是一个有点聪明。 因此,如果当前位是小于5,则 我们可以做电流数字乘以2。 这很简单。 如果是1,那么我们要添加2。 如果是2,我们要添加4。 如果是4,我们要添加8。 那么,有什么特别之处5? 好了,5次2是10。 并从pset的规范记住 我们要添加的数字 数的2倍,而不是 数乘以2本身。 因此,如果原始数 是7,7倍2是14。 我们希望加1加4 到的数目,而不是14。 因此,这里,如果该数目大于或等于5, 我们正在做的是当前数字 次2负9。 如果你考虑一下, 5倍2是10。 所以我们增加1, 这是10的负9。 和6次2是12。 所以我们增加3,其中 是12的负9。 而且适用于所有的数字。 所以,这就是我们要添加 我们的校验和。 这东西是什么的处理步骤 两个LUHN的算法,它只是 添加位,如果它不发生 为每一个其它数字的之一。 所以一旦我们有,这是保持 赛道的前两个字符 信用卡号码,第2 数字,因为我们最终将 想要使用该到这里来验证, 没事,签证已经开始 与此,与美国运通需要 开始与此,依此类推。 最后,我们做信用卡 数等于信用卡 除10号。 我们为什么这样做呢? 好了,我们只是处理的最后一个数字。 除以10将转向 整个数过来。 所以,现在当我们回圈,我们 将要处理的 倒数第二位。 然后,当我们打这个再次,我们要 切断倒数第二 位,环回,并办理第三 到最后一位,依此类推,直到 数达到0,在该点 我们跳出while循环。 我们还跟踪的功劳 卡号长度,因为这是 重要的是要区分是否是 一个有效的信用卡号码。 所以,现在,一旦我们计算了 校验和,我们就可以判断它是否 是一个有效的卡。 校验模10是一部分 的LUHN的算法。 如果校验和国防部10返回的东西 不为零,那么这将返回true, 在这种情况下,数 必须是无效的。 否则,如果校验模10 是0,那么我们就可以继续下去。 这个大东西,如果是说,如果第一个 两个数字都等于AMEX 1, 其中在这里,我们看到,美国证券交易所 1,按照该规范,是34。 我们也将比较它 到AMEX 2,这是37。 和信用卡号码的长度是 等于预期美国运通 卡的长度,那么我们就可以 打印美国运通。 我们会做类似的事情与Visa。 前两个数字需要更大 大于或等于40,或更 大于或等于49。 这些代表有效的Visa卡。 和长度需要等于 签证长度1或Visa长度2。 等的长度必须是 13或16位长。 最后用万事达卡,它的 类似签证,即前两个 数字必须是在一定的 范围,并且长度必须 正好是16位数字。 因此,如果任何这些情况下按住,然后在 第一种情况下,我们将打印AMEX。 如果这种情况成立,我们将打印签证。 如果这种情况成立,我们将 打印万事达卡。 但是,如果这些都不抱,甚至 如果校验是有效的, 我们还是打印无效。 因为它不是一个 这些类型的卡。 我的名字是罗布,我希望你 发现信用有趣。