该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

