>> ROB Bowden: Xin chào, tôi Rob.
Và tôi hy vọng bạn sẽ bị tính lên cho tín dụng.
Điều đầu tiên nên chúng ta cần làm được yêu cầu thẻ tín dụng
số từ người dùng.
Ở đây, chúng tôi đang sử dụng getLongLong.
Bạn cũng có thể đã sử dụng getString, nhưng trong trường hợp đó, bạn cần phải kiểm tra
mà không có không phải số ký tự trong chuỗi.
Vì vậy, chúng tôi sẽ sử dụng getLongLong.
>> Hãy nhớ rằng bạn không thể sử dụng một cái gì đó như getInt, vì số lượng sẽ được
quá lớn để phù hợp với một số nguyên.
Một khi chúng ta có con số đó, chúng tôi thấy ở đây trong khi vòng lặp này.
Vì vậy vòng lặp trong khi điều này được thực hiện Thuật toán Luhn của bạn
thấy trong spec pset.
>> Và nó thực sự đi được một chút thông minh.
Vì vậy, trong spec pset, nhận thấy rằng Các bước một và hai là riêng biệt.
Trước tiên chúng ta đi qua toàn bộ thẻ tín dụng số, tìm kiếm mỗi khác
nhân vật bắt đầu từ thứ hai đến ký tự cuối cùng, và nhân chúng
và thêm tất cả các chữ số.
Sau đó, sau đó, chúng tôi thêm vào tất cả các chữ số khác.
>> Vì vậy, thay vì làm những người trong hai bước riêng biệt, chúng ta sẽ kết hợp
chúng vào một sự lặp lại trong toàn bộ số thẻ tín dụng.
Ở đây, chúng ta thấy int hiện chữ số bình đẳng số thẻ tín dụng, mod 10.
Số thẻ tín dụng là những gì mod 10 làm gì?
Nó đem lại cho chúng ta những chữ số cuối cùng trong toàn bộ số.
Vì vậy, hãy nhớ rằng nếu chúng ta chia thứ tăng 10, sau đó phần còn lại
sẽ là bất cứ điều gì mà chữ số cuối cùng là.
23 chia cho 10, còn lại sẽ là 3.
>> Vì vậy, các chữ số cuối cùng, bây giờ đây, chúng ta thấy chúng tôi đang phân nhánh trên mult 2.
Vì vậy, những gì chúng ta sẽ được sử dụng mult 2 cho được sự khác biệt giữa
một trong những "mỗi số khác các chữ số thứ hai "con số.
Mult 2 sẽ bắt đầu ra như sai, vì các chữ số cuối cùng không nên
được xem xét từ thứ hai chữ số cuối cùng.
>> Vì vậy, sau đó vào cuối này cho vòng lặp, chúng tôi thấy rằng chúng ta sẽ thay đổi điều này
từ false thành true.
Trên phiên bản kế tiếp của vòng lặp cho, nó sẽ được coi là đúng cho đến khi
Cuối cùng, khi chúng ta thay đổi nó từ true sang false.
Bởi vì sau đó chúng tôi sẽ được vào thứ ba chữ số cuối cùng, đó không phải là một trong những
chữ số mà chúng ta nên nhân với 2.
>> Vì vậy, nếu chúng tôi xảy ra được trên một trong những chữ số mà chúng tôi muốn nhân với 2,
chúng ta thấy chúng ta đang thêm để kiểm tra của chúng tôi.
Và ở đây, chúng tôi đang sử dụng điều hành ternary một lần
một lần nữa là một chút thông minh.
Vì vậy, nếu hiện chữ số nhỏ hơn 5, sau đó chúng tôi chỉ có thể làm hiện lần chữ số 2.
Đó là đơn giản.
Nếu đó là 1, sau đó chúng tôi muốn thêm 2.
Nếu đó là 2, chúng ta muốn thêm 4.
Nếu đó là 4, chúng ta muốn thêm 8.
>> Vì vậy, những gì đặc biệt về 5?
Vâng, 5 lần 2 là 10.
Và ghi nhớ từ các spec pset mà chúng ta muốn thêm các chữ số của
lần thứ 2, và không phải là lần thứ 2 chính nó.
Vì vậy, nếu số lượng ban đầu được 7, 7 lần 2 là 14.
Chúng ta muốn thêm 1 cộng với 4 số lượng, không 14.
>> Vì vậy, ở đây, nếu số lượng là 5 hoặc cao hơn, những gì chúng ta đang làm hiện chữ số là
lần 2 trừ đi 9.
Và nếu bạn nghĩ về điều đó, 5 lần 2 là 10.
Và vì vậy chúng tôi đang thêm 1, đó là 10 trừ đi 9.
Và 6 lần 2 là 12.
Vì vậy, chúng ta đang thêm 3, 12 trừ đi 9.
Và làm việc cho tất cả các số.
>> Vì vậy, đó là những gì chúng ta đang thêm để kiểm tra của chúng tôi.
Và khác đây là những gì xử lý Bước Hai của thuật toán Luhn, mà chỉ là
thêm các chữ số nếu nó không xảy ra là một trong những hàng chữ số khác.
Vì vậy, một khi chúng ta đã có, điều này được giữ theo dõi của hai nhân vật đầu tiên của
số thẻ tín dụng, lần đầu tiên hai chữ số, vì chúng tôi cuối cùng sẽ
muốn sử dụng ở đây để xác minh, tất cả các bên phải, một Visa có để bắt đầu
với điều này, và một nhu cầu American Express để bắt đầu với điều này, và như vậy.
>> Cuối cùng, chúng tôi làm thẻ tín dụng số bằng thẻ tín dụng
số chia cho 10.
Tại sao chúng ta làm điều đó?
Vâng, chúng tôi chỉ xử lý các chữ số cuối cùng.
Chia cho 10 sẽ chuyển toàn bộ số hơn.
Vì vậy, bây giờ khi chúng ta lặp lại, chúng tôi sẽ được xử lý
thứ hai chữ số cuối cùng.
Sau đó, khi chúng ta nhấn này một lần nữa, chúng ta sẽ để cắt đứt các thứ hai để cuối cùng
chữ số, lặp lại, và xử lý thứ ba cuối chữ số, và như vậy, cho đến khi
số đạt đến 0, lúc này chúng ta thoát ra khỏi vòng lặp while.
>> Chúng tôi cũng theo dõi các tín dụng chiều dài số thẻ, vì đó là
quan trọng để phân biệt cho dù đó là một số thẻ tín dụng hợp lệ.
Vì vậy, bây giờ, khi chúng tôi đã tính toán kiểm tra, chúng ta có thể xác định xem nó
là một thẻ hợp lệ.
Checksum mod 10 là một phần của thuật toán Luhn của.
Nếu kiểm tra mod 10 trở về một cái gì đó khác không, thì điều này sẽ trở thành sự thật,
trong trường hợp này, số phải không hợp lệ.
>> Nếu không, nếu kiểm tra mod 10 là 0, sau đó chúng tôi có thể tiếp tục.
Này lớn khác nếu nói rằng, nếu là người đầu tiên hai chữ số bằng nhau để AMEX 1,
nơi lên ở đây, chúng ta thấy rằng AMEX 1, theo spec, là 34.
Và chúng tôi cũng sẽ so sánh nó để AMEX 2, đó là 37.
Và độ dài số thẻ tín dụng là bằng với dự kiến ​​American Express
chiều dài thẻ, sau đó chúng ta có thể in American Express.
>> Chúng tôi sẽ làm một điều tương tự với Visa.
Hai chữ số đầu tiên cần phải được lớn hơn hơn hoặc bằng 40, hoặc ít hơn
hơn hoặc bằng 49.
Những đại diện cho thẻ Visa hợp lệ.
Và chiều dài cần phải được bằng Thị thực dài 1 hoặc Visa dài 2.
Và do đó, chiều dài phải là một trong hai 13 hoặc 16 chữ số dài.
>> Và cuối cùng với MasterCard, đó là tương tự như Visa, mà lần đầu tiên hai
chữ số cần phải được trong một số phạm vi, và phải chiều dài
được chính xác 16 chữ số.
Vì vậy, nếu có những trường hợp tổ chức, sau đó trong trường hợp đầu tiên, chúng tôi sẽ in AMEX.
Nếu trường hợp này tổ chức, chúng tôi sẽ in Visa.
Nếu trường hợp này tổ chức, chúng tôi sẽ in MasterCard.
>> Nhưng nếu không có những tổ chức, thậm chí nếu kiểm tra là hợp lệ,
chúng tôi vẫn in không hợp lệ.
Bởi vì nó không phải là một trong những những loại thẻ.
Tên tôi là Rob, và tôi hy vọng bạn thấy thú vị tín dụng.