1. 程式人生 > >卡號校驗

卡號校驗

問題描述

當你輸入信用卡號碼的時候,有沒有擔心輸錯了而造成損失呢?其實可以不必擔心,因為並不是一個隨便的信用卡都是合法的,他必須通過luhn演算法驗證通過。

該校驗的過程:

1、從卡號最後一個數字開始,逆向將奇數位(1,3,5)相加。

2、從卡號最後一位數字開始,逆向將偶數為數字,先乘以2(如果乘積為兩位數,則將其減去9),再求和。

3、將奇數位總和加上偶數位總和,結果應該可以被10整除。

例如:卡號是5432123456788881

則奇數位是:1 8 8  6 4 2 2 4              奇數位和=35

偶數位乘以2(有些要減去9)的結果是:1 6 2 6 1 5 7 7      求和=35

最後35+35=79,可以被10整除,認定校驗通過。

請編寫一個程式,從鍵盤輸入卡號,然後判斷是否校驗通過,通過顯示:”成功“,否則顯示:”失敗“。

比如:使用者輸入:356827027232780

程式輸出:成功。

import java.util.Scanner;


public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String str = in.next();
int j_num = 0;
int o_num = 0;
int total;
for(int i=str.length()-1;i>=0;i-=2){     //奇數位
String s = str.substring(i,i+1);
int s_num = Integer.parseInt(s);
j_num += s_num;
}
for(int i=str.length()-2;i>=0;i-=2){     //偶數位
String s1 = str.substring(i, i+1);
int s1_num = Integer.parseInt(s1);
int result = s1_num*2;
if(result>=10){
o_num += result-9;
}
if(result<10){
o_num += result;
}
}
total = j_num + o_num;
if(total%10==0){
System.out.println("成功");
}else{
System.out.println("失敗");
}
}
}