該Luhn校驗位算法在Java
//------------------------------------------------ ---------
/ /檢查是否有效的信用卡號碼使用Luhn算法
//------------------------------------------------ ---------
公共抽象類LuhnCheck (
//--------------------------------
/ /篩選非數字字符
//--------------------------------
私營靜態字符串getDigitsOnly (字符串縣) (
StringBuffer digitsOnly =新StringBuffer ( ) ;
焦炭,丙型;
為(國際為I = 0我“ s.length ( ) ;一+ + ) (
ç = s.charAt ( i )段;
如果( Character.isDigit (三) ) (
digitsOnly.append ( c )段;
)
)
返回digitsOnly.toString ( ) ;
)
//-------------------
/ /執行Luhn檢查
//-------------------
公共靜態布爾isValid (字符串cardNumber ) (
字符串digitsOnly = getDigitsOnly ( cardNumber ) ;
國際總和= 0 ;
國際位數= 0 ;
國際加數= 0 ;
布爾timesTwo =虛假的;
為(國際為I = digitsOnly.length ( ) - 1 ,我“ = 0 ;我- ) (
位數= Integer.parseInt ( digitsOnly.substring (我,我+ 1 ) ) ;
如果( timesTwo ) (
加數=位數* 2 ;
如果(加數“ 9 ) (
加數-= 9 ;
)
)
其他(
加數=兩位數;
)
總之+ =加數;
timesTwo = ! timesTwo ;
)
國際模=總和% 10 ;
返回模== 0 ;
)
//-----
/ /測試
//-----
公共靜態無效主要(字符串[ ] args ) (
字符串cardNumber = “ 4408 0412 3456 7890 ” ;
Boolean有效= LuhnCheck.isValid ( cardNumber ) ;
System.out.println ( cardNumber + “ : ” +有效) ;
cardNumber = “ 4408 0412 3456 7893 ” ;
有效= LuhnCheck.isValid ( cardNumber ) ;
System.out.println ( cardNumber + “ : ” +有效) ;
cardNumber = “ 4417 1234 5678 9112 ” ;
有效= LuhnCheck.isValid ( cardNumber ) ;
System.out.println ( cardNumber + “ : ” +有效) ;
cardNumber = “ 4417 1234 5678 9113 ” ;
有效= LuhnCheck.isValid ( cardNumber ) ;
System.out.println ( cardNumber + “ : ” +有效) ;
)
)
|
書籤的Luhn檢查數據算法在Java

