>> ROB Bowden: Hi, aku Rob.
Dan saya harap Anda dikenakan biaya untuk kredit.
Sehingga hal pertama yang perlu kita lakukan adalah meminta kartu kredit
nomor dari pengguna.
Di sini, kita menggunakan getLongLong.
Anda bisa juga digunakan getString, tapi dalam hal ini, Anda akan perlu memeriksa
bahwa tidak ada non-numerik karakter dalam string.
Jadi kita akan menggunakan getLongLong.
>> Ingat bahwa Anda tidak dapat menggunakan sesuatu seperti getInt, karena nomor tersebut akan
terlalu besar untuk muat dalam integer.
Setelah kita memiliki nomor itu, kami lihat di sini while ini.
Jadi sementara lingkaran ini adalah menerapkan Algoritma Luhn bahwa Anda
lihat di pset spec.
>> Dan itu benar-benar akan menjadi sedikit pintar.
Jadi dalam pset spec, perhatikan bahwa Steps Satu dan Dua terpisah.
Kami pertama kali pergi ke seluruh kartu kredit nomor, mencari setiap lain
karakter mulai dari kedua Karakter terakhir, dan mengalikan mereka
dan menambahkan semua angka.
Kemudian setelah itu, kita tambahkan di semua lainnya digit.
>> Jadi, bukannya melakukan hal-dua langkah yang terpisah, kita akan menggabungkan
mereka ke dalam satu iterasi atas nomor kartu kredit keseluruhan.
Di sini, kita melihat int equals skr digit nomor kartu kredit, mod 10.
Berapa nomor kartu kredit mod 10 lakukan?
Ini memberi kita digit terakhir di seluruh nomor.
Jadi ingat bahwa jika kita membagi nomor naik 10, maka sisanya
akan menjadi apa pun yang digit terakhir adalah.
23 dibagi dengan 10, maka sisanya akan 3.
>> Jadi angka terakhir, sekarang di sini, kita melihat kita bercabang pada mult oleh 2.
Jadi apa yang kita akan menggunakan mult oleh 2 untuk yang membedakan antara
salah satu "setiap nomor lain dari digit "angka kedua.
Mult oleh 2 akan mulai keluar sebagai palsu, karena angka terakhir tidak boleh
dipertimbangkan dari kedua angka terakhir.
>> Jadi pada akhir ini untuk loop, kita melihat bahwa kita akan mengubah ini
dari false ke true.
Pada iterasi berikutnya untuk loop, itu akan dianggap benar sampai
akhir, ketika kita mengubah dari benar menjadi false.
Karena dengan begitu kita akan berada di ketiga untuk angka terakhir, yang tidak salah satu dari
angka yang kita harus kalikan dengan 2.
>> Jadi, jika kita berada di salah satu digit yang ingin kita kalikan dengan 2,
kita melihat kita menambah checksum kami.
Dan di sini, kita menggunakan operator ternary untuk sekali
lagi menjadi sedikit pintar.
Jadi jika skr digit kurang dari 5, maka kita hanya bisa melakukan skr digit kali 2.
Itu sederhana.
Jika itu 1, maka kita ingin menambahkan 2.
Jika itu 2, kita ingin menambahkan 4.
Jika itu 4, kita ingin menambahkan 8.
>> Jadi apa yang khusus tentang 5?
Nah, 5 kali 2 adalah 10.
Dan ingat dari pset spec yang kita ingin menambahkan digit dari
nomor 2 kali, dan bukan jumlah kali 2 itu sendiri.
Jadi jika jumlah asli adalah 7, 7 kali 2 adalah 14.
Kami ingin menambahkan 1 ditambah 4 ke nomor tersebut, tidak 14.
>> Jadi di sini, jika nomor tersebut adalah 5 atau lebih besar, apa yang kita lakukan adalah digit skr
kali 2 minus 9.
Dan jika Anda berpikir tentang hal itu, 5 kali 2 adalah 10.
Dan jadi kita menambahkan 1, yang merupakan 10 minus 9.
Dan 6 kali 2 adalah 12.
Jadi kita menambahkan 3, yang adalah 12 minus 9.
Dan yang bekerja untuk semua nomor.
>> Jadi itulah yang sedang kita menambahkan untuk checksum kami.
Dan lagi ini adalah apa yang menangani Langkah Dua algoritma Luhn, yang hanya
menambahkan digit jika itu tidak terjadi menjadi salah satu dari setiap lainnya digit.
Jadi setelah kita memiliki itu, ini adalah menjaga track dari dua karakter pertama dari
nomor kartu kredit, dua yang pertama digit, karena kita akhirnya akan
ingin menggunakan di sini untuk memverifikasi, semua benar, Visa harus mulai
dengan ini, dan kebutuhan American Express untuk memulai dengan ini, dan sebagainya.
>> Akhirnya, kita lakukan kartu kredit nomor sama dengan kartu kredit
nomor dibagi dengan 10.
Mengapa kita melakukan itu?
Yah, kita hanya ditangani digit terakhir.
Membagi oleh 10 akan bergeser seluruh nomor di atas.
Jadi sekarang ketika kita loop kembali, kami akan menangani
kedua angka terakhir.
Kemudian ketika kita memukul ini lagi, kita akan untuk memotong kedua untuk terakhir
digit, loop kembali, dan menangani ketiga berlangsung digit, dan seterusnya, sampai
nomor mencapai 0, di mana titik kita keluar dari while loop.
>> Kami juga melacak kredit Panjang nomor kartu, karena itulah
penting untuk membedakan apakah itu nomor kartu kredit yang valid.
Jadi sekarang, setelah kami telah menghitung checksum, kita dapat menentukan apakah
adalah kartu yang valid.
Checksum mod 10 adalah bagian algoritma Luhn ini.
Jika checksum mod 10 kembali sesuatu non-nol, maka ini akan kembali benar,
dalam hal ini, nomor harus valid.
>> Jika tidak, jika checksum mod 10 adalah 0, maka kita dapat melanjutkan.
Ini besar lain jika mengatakan, jika yang pertama dua digit sama dengan AMEX 1,
di mana di sini, kita melihat bahwa AMEX 1, sesuai spec, adalah 34.
Dan kami juga akan membandingkannya AMEX ke 2, yaitu 37.
Dan panjang nomor kartu kredit sama dengan yang diharapkan American Express
panjang kartu, maka kita dapat mencetak American Express.
>> Kami akan melakukan hal yang sama dengan Visa.
Dua digit pertama harus lebih besar dari atau sama dengan 40, atau kurang
dari atau sama dengan 49.
Mereka mewakili kartu Visa yang valid.
Dan panjangnya harus sama dengan Visa Panjang 1 atau Visa Panjang 2.
Dan begitu panjang harus baik 13 atau 16 digit.
>> Dan akhirnya dengan MasterCard, itu mirip dengan Visa, bahwa dua yang pertama
digit harus di tertentu jangkauan, dan panjang harus
persis 16 digit.
Jadi jika salah satu dari mereka memegang kasus, maka dalam kasus pertama, kami akan mencetak AMEX.
Jika kasus ini berlaku, kami akan mencetak Visa.
Jika kasus ini berlaku, kita akan mencetak MasterCard.
>> Tapi kalau tidak satupun dari mereka terus, bahkan jika checksum itu valid,
kami masih mencetak valid.
Karena itu tidak salah jenis-jenis kartu.
Nama saya Rob, dan saya harap Anda temukan menarik kredit.