日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java黑皮书课后题第6章:**6.31(金融应用:信用卡号的合法性验证)和**6.32 编写程序,提示用户输入一个long型整数的信用卡号码,显示这个数字是合法的还是非法的

發(fā)布時間:2024/7/23 java 30 豆豆

6.31(金融應(yīng)用:信用卡號的合法性驗證)編寫程序,提示用戶輸入一個long型整數(shù)的信用卡號碼,顯示這個數(shù)字是合法的還是非法的

  • 6.31題目
    • 題目描述
    • 破題
  • 6.31代碼
  • 6.32
    • 代碼
    • 運行實例

6.31題目

題目描述

6.31(金融應(yīng)用:信用卡號的合法性驗證)信用卡號遵循某種模式。一個信用卡號必須是13到16位的整數(shù),它的開頭必須是:

  • 4,指Visa卡
  • 5,指Master卡
  • 37,指American Express卡
  • 6,指Discover卡

1954年,IBM的Hans Luhn提出一種算法,用于驗證信用卡號的有效性。這個算法在確定輸入的卡號是否正確,或者這張信用卡是否被掃描儀正確掃描方面是非常有用的。遵循這個方法……(假設(shè)卡號為4388576018402626):

  • 從右往左偶數(shù)位數(shù)字翻倍。(如果翻倍之后是兩位數(shù)則將兩位加在一起得到一位數(shù))
  • 將第一步得到的所有一位數(shù)相加
  • 將從右往左的奇數(shù)位相加
  • 2、3步結(jié)果相加
  • 如果第4步結(jié)果能被10整除,則為合法;反正為非法
  • 如:號碼4388576018402626非法,4388576018410707合法
    編寫程序,提示用戶輸入一個long型整數(shù)的信用卡號碼,顯示這個數(shù)字是合法的還是非法的
    使用下面的方法設(shè)計程序:
    /** Return true if the card number is valid */
    public static boolean isValid(long number)
    // Get the result from Step 2:第二步
    public static int sumOfDoubleEvenPlace(long number)
    // Return this number if it is a single digit, otherwise,
    // return the sum of the two digits:第一步
    public static int getDigit(int number)
    // Return sum of odd-place digits in number:第三步
    public static int sumOfOddPlace(long number)
    // Return true if the number d is a prefix for number:判斷前綴
    public static boolean prefixMatched(long number, int d)
    // Return the number of digits in d:獲取長度
    public static int getSize(long d)
    // Return the first k number of digits from number, If the 返回第一個k位數(shù)
    // number of digits in number is less than k, return number:
    public static long getPrefix(long number, int k)
    可以改用String獲取輸入
    下面是程序的運行示例:

    Enter a credit card number as a long integer4388576018410707 4388576018410707 is valid Enter a credit card number as a long integer4388576018402626 4388576018402626 is invalid

    破題

  • main方法:獲取輸入、將輸入內(nèi)容傳遞給isValid方法并接收結(jié)果、判斷并輸出結(jié)果
  • isValid方法(被main方法調(diào)用):調(diào)用第二步第三步對應(yīng)方法并獲取返回值,兩個數(shù)相加判斷是否能被10整除
  • sumOfDoubleEvenPlace和sumOfOddPlace兩個方法:對偶數(shù)、對奇數(shù)進(jìn)行不同的轉(zhuǎn)換相加,由isValid方法調(diào)用
  • getSize方法:判斷長度,因為博主已經(jīng)改用String類型接收,直接使用String的length()屬性即可
  • prefixMatched方法:判斷前綴是否由4\5\6\37組成,由主方法調(diào)用
  • 6.31代碼

    import java.util.Scanner;public class Test6_31 {public static void main(String[] args) {// 獲取輸入Scanner input = new Scanner(System.in);System.out.print("Enter a credit card number as a long integer\n\t");String str = input.next();// 判斷str長度是否達(dá)到標(biāo)準(zhǔn)int length = getSize(str);if (length < 13 || length > 16){System.out.print(str + " is invalid");System.exit(1);}// 判斷str是否是由4、5、37、6為前綴boolean bool1 = prefixMatched(str, 4);boolean bool2 = prefixMatched(str, 5);boolean bool3 = prefixMatched(str, 37);boolean bool4 = prefixMatched(str, 6);if (bool1 || bool2 || bool3 || bool4){}else{System.out.print(str + " is invalid");System.exit(1);}// 將輸入內(nèi)容傳遞給isValid方法并接收結(jié)果boolean result = isValid(str);// 判斷并輸出結(jié)果if (result)System.out.print(str + " is valid");elseSystem.out.print(str + " is invalid");}/** Return true if the card number is valid */public static boolean isValid(String number){int result = sumOfDoubleEvenPlace(number) + sumOfOddPlace(number);if (result % 10 == 0)return true;elsereturn false;}// 第二步:偶數(shù)位二倍相加(如果是兩位數(shù)則這兩位數(shù)相加public static int sumOfDoubleEvenPlace(String number){int length = getSize(number);int sum = 0;String temp = "";for (int i = 1; i < length;i+=2){temp = number.substring(i, i+1);sum += Math.pow(Integer.parseInt(temp), 2);}return sum;}// 第三步:奇數(shù)位相加public static int sumOfOddPlace(String number){int length = getSize(number);int sum = 0;String temp = "";for (int i = 1; i < length;i+=2){temp = number.substring(i, i+1);sum += Math.pow(Integer.parseInt(temp), 2);}return sum;}// 判斷長度public static int getSize(String d){return d.length();}// 判斷前綴public static boolean prefixMatched(String number, int d){if (d < 10){String temp = number.substring(0,1);int start = Integer.parseInt(temp);if (start >= 4 && start <= 6)return true;elsereturn false;}else{String temp = number.substring(0,2);int str_int = Integer.parseInt(temp);if (str_int == 37)return true;elsereturn false;}} }

    6.32

    代碼

    因為6.30和6.32兩道題題目內(nèi)容有些問題
    可能時不時會被下線
    博主還在不斷修改、完善內(nèi)容

    public class Test6_32 {public static void main(String[] args) {// 主方法隨機(jī)生成2個[1,6]的任意整數(shù)(int)(Math.random()*6+1)int a = 0, b = 0, feedback = 0, count = 0;for (int i = 1; i < 10000; i++){a = (int)(Math.random()*6+1);b = (int)(Math.random()*6+1);//System.out.println("You rolled " + a + " + " + b + " = " + (a+b));feedback = judge(a, b);//如果贏了返回1、輸了返回-1,還需要判斷返回0if (feedback == 1){//System.out.print("You win");count++;}else if (feedback == -1){//System.out.print("You lose");}else{//System.out.print("point is " + (a+b) + "\n");}}System.out.println(count);}// 判斷隨機(jī)生成的兩個整數(shù)和的結(jié)果public static int judge(int a, int b){int sum = a+b;if (sum == 7 || sum == 11)return 1;else if (sum == 2 || sum == 3 || sum == 12)return -1;elsereturn 0;} }

    運行實例

    2161Process finished with exit code 0

    總結(jié)

    以上是生活随笔為你收集整理的Java黑皮书课后题第6章:**6.31(金融应用:信用卡号的合法性验证)和**6.32 编写程序,提示用户输入一个long型整数的信用卡号码,显示这个数字是合法的还是非法的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久久中文字幕 | 97视频久久久 | 麻豆视频在线观看 | 三级黄片毛片 | 99re最新| 日韩视频一 | 国产黄色一级网站 | 亚洲福利在线视频 | 激情久 | 99综合| 亚洲精品视频在线观看免费 | 日本裸体xx少妇18在线 | 激情五月开心婷婷 | 新版红楼梦在线高清免费观看 | 熟睡侵犯の奶水授乳在线 | 天天做夜夜操 | 色香蕉在线 | 久久久久久久久综合 | 精品久久久久久无码国产 | 69av视频在线观看 | 成人欧美一区二区三区在线观看 | aa在线| 日韩在线播放中文字幕 | 久久婷五月天 | av综合色 | 天堂最新 | 欧美婷婷六月丁香综合色 | 韩国无码一区二区三区精品 | 国产美女免费视频 | 青娱乐国产在线 | 精品视频在线一区 | 日韩av不卡一区二区 | 久草综合视频 | 丁香色欲久久久久久综合网 | 美女久久久久久久 | 国产乡下妇女做爰毛片 | 日韩精品免费一区二区夜夜嗨 | 欧洲色网| 91人妻一区二区三区蜜臀 | 日本少妇色视频 | 国产精品成人免费一区久久羞羞 | 精品欧美黑人一区二区三区 | 成人动漫视频 | 欧洲一区二区在线观看 | 性猛交富婆╳xxx乱大交麻豆 | www.色网 | 伊人精品 | 无码精品在线视频 | 91口爆一区二区三区在线 | 在线一区二区三区四区 | 理论片av| 青青视频在线播放 | caoporen在线 | 国产精品4区 | 欧美人与动牲交xxxxbbbb | 黄色一极视频 | www.国产.com | 热久久91 | 国产又粗又猛又黄 | 五月婷婷在线播放 | 国产夜色视频 | 国产精品久久久午夜夜伦鲁鲁 | xxx国产在线观看 | 欧美日韩精品二区 | 美女扒开尿口让男人捅爽 | av国产免费| 成人在线影视 | 男人扒女人添高潮视频 | 亚洲天堂免费看 | 免费看一级黄色大全 | 欧美肥老妇视频九色 | 国产免费观看久久黄av片 | 极品白嫩的小少妇 | 18禁网站免费无遮挡无码中文 | 日本午夜三级 | 婷婷在线免费观看 | 国产伦精品一区二区三区照片91 | 国产高清免费av | 亚洲作爱视频 | 丰满人妻一区二区三区53号 | 五月婷av| 午夜久久久久久久久久久 | 成人动漫av | 香蕉视频传媒 | av不卡高清 | 五十路六十路 | 久久久久久久久久久久久av | julia在线播放88mav | 毛片网站入口 | 麻豆影视在线播放 | 久久欧美视频 | 国产乱人乱偷精品视频a人人澡 | 免费看国产片在线观看 | 一区二区三区免费观看视频 | 亚洲天堂中文字幕在线观看 | 欧美日韩国产黄色 | 久久久国产精品 | 亚洲熟女乱色综合亚洲小说 | 色综合色婷婷 |