ROB אודן: היי, אני רוב. ואני מקווה שאתה מחויב עד לאשראי. דבר אז קודם כל שאנחנו צריכים לעשות הוא לבקש כרטיס האשראי מספר מהמשתמש. כאן, אנו משתמשים getLongLong. אתה יכול גם להשתמש בי getString, אבל במקרה זה, היית צריך לבדוק כי לא היו שאינו מספרי תווים במחרוזת. לכן אנו נשתמש getLongLong. זכור כי אתה לא יכול להשתמש במשהו כמו getInt, שכן המספר יהיה גדול מדי כדי להתאים במספר שלם. ברגע שיש לנו את המספר הזה, אנחנו רואה כאן בזמן שלולאה זו. אז בזמן שלולאה זו מיישמת האלגוריתם של Luhn שאתה רואה במפרט pset. וזה באמת הולך להיות קצת חכם. אז במפרט pset, יבחין כי שלבים אחד ושתיים נפרדים. אנחנו הולכים ראשון על פני כל כרטיס האשראי מספר, מחפש כל אחר דמות החל משני ל התו אחרון, והכפלתם ומוסיף את כל הספרות. ואז אחרי זה, אנו מוסיפים ב כל הספרות אחרת. אז במקום לעשות אותם בשני צעדים נפרדים, אנחנו הולכים לשלב אותם לאיטרציה אחת על פני מספר כרטיס אשראי כולו. כאן, אנו רואים שווים ספרתיים נוכ int מספר כרטיס אשראי, mod 10. מהו מספר כרטיס אשראי mod 10 עושה? זה נותן לנו את הספרה האחרונה במספר השלם. אז לזכור שאם אנחנו חילקנו את מספר על ידי 10, ולאחר מכן את היתרה יהיה מה שהספרה האחרונה היא. 23 מחולקים 10, שארית תהיה 3. אז את הספרה האחרונה, עכשיו כאן, אנו רואים אנחנו הסתעפות בmult על ידי 2. אז מה שאנחנו הולכים להיות באמצעות mult ב -2 להוא הבחנה בין אחד "בכל מספרים אחרים מ המספרים שני ספרות ". Mult ידי 2 הולך מתחיל בתור שווא, שכן הספרה האחרונה לא צריך להיחשב מ שני לספרה האחרונה. אז בסוף זה ללולאה, אנחנו רואה שאנחנו הולכים לשנות את זה משווא לנכון. באיטרציה הבאה של לולאת for, זה הולך נחשב נכון עד הסוף, כאשר אנו משנים את זה מאמיתי לכוזב. כי אז נהיה בשלישי הספרה האחרונה, שהוא לא אחד מן ספרות שאנחנו צריכים להכפיל ב 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, שהוא רק הוספת הספרה במידה שזה לא יקרה להיות אחד מכל ספרות אחרת. אז ברגע שיש לנו את זה, זה הוא שמירה מסלול של שני התווים הראשונים של מספר כרטיס אשראי, שני הראשונים ספרות, שכן אנחנו הולכים סופו של דבר רוצה להשתמש בזה לכאן כדי לוודא, בסדר, ויזה יש להתחיל עם זה, וצרכי ​​אמריקן אקספרס להתחיל עם זה, וכן הלאה. לבסוף, אנו עושים בכרטיס אשראי מספר שווה בכרטיס אשראי מספר מחולק ב10. למה אנחנו עושים את זה? ובכן, אנחנו רק טיפלנו בספרה האחרונה. חילוק ב 10 יעבור כל המספר מעל. אז עכשיו כאשר אנו לולאה אחורית, אנחנו הולך להיות טיפול שני לספרה האחרונה. ואז, כאשר אנחנו פוגעים זה שוב, אנחנו הולכים לנתק את השנייה אחרונה ספרה, גב לולאה, ולהתמודד שלישי אחרון ספרתי, וכן הלאה, עד מספר מגיע ל 0, ובשלב זה שלנו לפרוץ את תוך הלולאה. אנחנו גם שמירה על המסלול של האשראי אורך מספר כרטיס, שכן זה חשוב להבחין בין אם זה מספר כרטיס אשראי בתוקף. אז עכשיו, ברגע שיש לנו מחושבים בדיקת סיכום, אנחנו יכולים לקבוע אם הוא הוא בתוקף כרטיס. בדיקת mod 10 הוא חלק של האלגוריתם של Luhn. אם משהו mod 10 חוזרים בדיקת אינו אפס, אז זה יהיה החזר אמיתי, ובמקרה זה, את המספר חייב להיות חוקי. אחרת, אם בדיקת mod 10 הוא 0, אז אנחנו יכולים להמשיך. זה גדול אחר אם הוא אומר, אם הראשון שתי ספרות הן שווים ל 1 AMEX, שבו עד כאן, אנו רואים כי AMEX 1, לפי המפרט, הוא 34. ואנחנו גם יהיו להשוות אותו לAMEX 2, שהוא 37. ואת אורך מספר כרטיס האשראי הוא שווה לאמריקן אקספרס הצפויה אורך כרטיס, אז אנחנו יכולים להדפיס אמריקן אקספרס. אנחנו נעשה דבר דומה עם ויזה. שתי הספרות הראשונות צריכה להיות גדול יותר או שווה ל 40, או פחות או שווה ל 49. אלה מייצגים כרטיסי ויזה בתוקף. והאורך צריך להיות שווה אורך ויזה 1 או אורך הוויזה 2. וכן האורך חייב להיות גם 13 או 16 ספרות ארוכה. ולבסוף עם מסטרקארד, זה בדומה לויזה, ששני הראשונים ספרות צריכה להיות במסוים טווח, וחובת האורך להיות בדיוק 16 ספרות. אז אם כל אחד ממקרים אלה מחזיקים, ולאחר מכן ב המקרה הראשון, נצטרך להדפיס AMEX. אם מקרה זה מחזיק, אנחנו להדפיס ויזה. אם מקרה זה מחזיק, אנחנו להדפיס מסטרקארד. אבל אם אף אחד מאלה מחזיקים, גם אם בדיקת הייתה בתוקף, אנחנו עדיין להדפיס חוקיים. כי זה לא אחד סוגים של כרטיסים אלה. השם שלי הוא רוב, ואני מקווה שאתה מעניין אשראי שמצא.