ROB Bowden: Hi, saya Rob. Dan saya berharap anda akan dikenakan caj untuk kredit. Perkara itu kita perlu lakukan adalah meminta kad kredit yang nombor dari pengguna. Di sini, kita menggunakan getLongLong. Anda boleh juga menggunakan getString, tetapi dalam kes itu, anda akan perlu menyemak bahawa tidak ada bukan nombor watak-watak dalam string. Oleh itu, kita akan menggunakan getLongLong. Ingat bahawa anda tidak boleh menggunakan sesuatu seperti getInt, kerana bilangan akan terlalu besar untuk dimuatkan di dalam integer. Apabila kita mempunyai jumlah itu, kita lihat di sini gelung selama ini. Jadi gelung selama ini sedang melaksanakan Algoritma Luhn yang anda lihat dalam spec Serangga ini. Dan ia sebenarnya akan untuk menjadi sedikit bijak. Jadi dalam spec Serangga itu, notis yang Langkah Satu dan Dua adalah berasingan. Kita mula-mula pergi ke kad kredit keseluruhan nombor, mencari setiap lain watak bermula dari kedua untuk watak lepas, dan mendarabkan mereka dan menambah semua digit. Kemudian selepas itu, kami menambah di semua angka lain. Jadi, daripada melakukan perkara-dalam dua langkah-langkah yang berasingan, kita akan menggabungkan mereka ke dalam satu lelaran ke atas nombor kad kredit keseluruhan. Di sini, kita melihat int setaraf kini angka nombor kad kredit, arena 10. Apakah nombor kad kredit arena 10 lakukan? Ia memberi kita digit terakhir secara keseluruhan nombor. Jadi ingat bahawa jika kita membahagikan nombor sebanyak 10, maka bakinya akan menjadi apa sahaja yang angka terakhir adalah. 23 dibahagikan dengan 10, selebihnya akan menjadi 3. Jadi angka yang lalu, kini di sini, kita lihat kita bercabang pada lisan dengan 2. Jadi apa yang kita akan menggunakan lisan oleh 2 untuk adalah membezakan antara salah satu daripada "setiap nombor yang lain dari kedua digit "nombor. Lisan oleh 2 akan bermula sebagai palsu, kerana angka yang terakhir tidak perlu dipertimbangkan dari kedua untuk digit terakhir. Demikian maka pada akhir ini untuk gelung, kami melihat bahawa kita akan mengubah ini daripada palsu kepada benar. Pada lelaran seterusnya untuk gelung, ia akan dianggap benar sehingga akhirnya, apabila kita menukar dari benar palsu. Kerana maka kita akan berada di ketiga untuk digit terakhir, yang bukan salah satu daripada digit bahawa kita harus membiak dengan 2. Jadi, jika kita berada pada salah satu daripada angka yang kita mahu untuk membiak dengan 2, kita lihat kita menambah checksum kami. Dan di sini, kami menggunakan pengendali pertigaan sekali lagi agak bijak. Jadi, jika kini angka adalah kurang daripada 5, maka kita hanya boleh lakukan kali kini angka 2. Itu mudah. Jika ia 1, maka kita mahu menambah 2. Jika ia 2, kami ingin menambah 4. Jika ia 4, kita mahu menambah 8. Jadi apa yang istimewa tentang 5? Nah, 5 kali 2 adalah 10. Dan ingat dari spec Serangga yang kita mahu menambah digit bagi kali nombor 2, dan bukan kali nombor 2 sendiri. Jadi, jika nombor asal adalah 7, 7 kali 2 adalah 14. Kami mahu menambah 1 ditambah 4 kepada bilangan, bukan 14. Jadi di sini, jika nombor adalah 5 atau lebih besar, apa yang kita lakukan adalah kini angka kali 2 tolak 9. Dan jika anda berfikir tentang itu, 5 kali 2 adalah 10. Dan jadi kita menambah 1, iaitu 10 tolak 9. Dan 6 kali 2 ialah 12. Jadi kita menambah 3, yang ialah 12 tolak 9. Dan yang bekerja untuk semua nombor. Jadi itulah yang kita sedang menambah untuk checksum kami. Dan lagi ini adalah apa yang mengendalikan Langkah Dua daripada algoritma Luhn ini, yang hanya menambah angka itu jika ia tidak berlaku untuk menjadi salah satu daripada setiap digit lain. Jadi sebaik sahaja kami mempunyai itu, ini adalah menjaga menjejaki kedua-dua aksara pertama bagi nombor kad kredit, dua yang pertama digit, kerana kita sedang akhirnya akan mahu menggunakan yang turun di sini untuk mengesahkan, semua betul, Visa mempunyai untuk memulakan dengan ini, dan keperluan American Express untuk memulakan dengan ini, dan sebagainya. Akhir sekali, kami melakukan kad kredit bilangan sama kad kredit bilangan dibahagikan dengan 10. Mengapa kita berbuat demikian? Nah, kita hanya ditangani digit terakhir. Membahagi dengan 10 akan beralih seluruh nombor di atas. Jadi sekarang apabila kita gelung kembali, kami akan mengendalikan kedua untuk digit terakhir. Kemudian apabila kita mencapai ini sekali lagi, kita akan untuk memotong kedua untuk bertahan digit, belakang gelung, dan mengendalikan ketiga untuk bertahan angka, dan sebagainya, sehingga jumlahnya mencapai 0, pada masa kita keluar daripada gelung sementara. Kami juga mengesan kredit panjang nombor kad, kerana itulah penting untuk membezakan sama ada ia nombor kad kredit yang sah. Jadi sekarang, sebaik sahaja kami telah dikira checksum, kita boleh menentukan sama ada ia adalah kad yang sah. The checksum arena 10 adalah sebahagian algoritma Luhn ini. Jika checksum arena 10 mengembalikan sesuatu bukan sifar, maka ini akan kembali benar, di mana, bilangan mesti tidak sah. Jika tidak, jika checksum arena 10 adalah 0, maka kita boleh terus. Ini besar lagi jika mengatakan, jika yang pertama dua digit adalah sama dengan AMEX 1, di mana di sini, kita lihat bahawa AMEX 1, seperti spec, adalah 34. Dan kita juga akan dibandingkan untuk AMEX 2, iaitu 37. Dan nombor kad kredit adalah panjang sama dengan jangkaan American Express panjang kad, maka kita boleh mencetak American Express. Kami akan melakukan perkara yang sama dengan Visa. Yang pertama dua digit perlu lebih besar daripada atau sama dengan 40, atau kurang daripada atau sama dengan 49. Mereka mewakili kad Visa sah. Dan panjang perlu sama dengan Visa Masa 1 atau Visa Length 2. Dan sebagainya panjang mesti sama ada 13 atau 16 digit. Dan akhirnya dengan MasterCard, ia sama dengan Visa, yang dua pertama digit perlu berada dalam tertentu jarak, dan yang mesti panjang betul-betul 16 digit. Jadi, jika mana-mana kes-kes yang memegang, maka dalam kes pertama, kami akan mencetak AMEX. Jika kes ini memegang, kami akan mencetak Visa. Jika kes ini memegang, kita akan mencetak MasterCard. Tetapi jika tiada yang memegang, walaupun jika checksum itu adalah sah, kita masih mencetak tidak sah. Kerana ia bukan salah satu orang-orang jenis kad. Nama saya Rob, dan saya berharap anda dijumpai menarik kredit.