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。 如果這種情況成立,我們將打印簽證。 如果這種情況成立,我們將 打印萬事達卡。 但是,如果這些都不抱,甚至 如果校驗是有效的, 我們還是打印無效。 因為它不是一個 這些類型的卡。 我的名字是羅布,我希望你 發現信用有趣。