驗證從標準輸入獲得的信用卡號是否校驗通過, 校驗通過,則輸出”成功“,校驗未通過則輸出”失敗“

(羣碩)6. 編寫一個程序,驗證從標準輸入獲得的信用卡號是否校驗通過, 校驗通過,則輸出”成功“,校驗未通過則輸出”失敗“。該校驗過程如下:

(1)從卡號最後一位數字開始,逆向將奇數位(l,3,5等等)相加。 (2)從卡號最後一位數字開始,逆向將偶數位數字,先乘以2(如果乘積爲兩位數, 則將其減去9),再求和。 (3)將奇數位總和加上偶數位總和,結果應該可以被10整除。 例如,卡號是54321123456788881,則程序應輸出:成功。請編程實現。

public class KaHao {
	/*
	 * (羣碩)6. 編寫一個程序,驗證從標準輸入獲得的信用卡號是否校驗通過, 校驗通過,則輸出”成功“,校驗未通過則輸出”失敗“。該校驗過程如下:
	 * (1)從卡號最後一位數字開始,逆向將奇數位(l,3,5等等)相加。 (2)從卡號最後一位數字開始,逆向將偶數位數字,先乘以2(如果乘積爲兩位數,
	 * 則將其減去9),再求和。 (3)將奇數位總和加上偶數位總和,結果應該可以被10整除。
	 * 例如,卡號是54321123456788881,則程序應輸出:成功。請編程實現。
	 */
	public static void main(String[] args) {
		
		//單個字符轉換爲整型,只需:int num=ch[i]-'0';
		
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入你的卡號:");
		String str = sc.next();
		char[] ch = str.toCharArray();
		int re=ji(ch)+ou(ch);
		if (re%10==0) {
			System.out.println("這是一個正確的卡號");
		}
		else
		{
			System.out.println("這個卡號不正確");
		}
	}

	private static int  ou(char[] ch) {
		int sum2=0;
		//數組的最後一位比長度少1,偶數位又減一
		for (int i =  ch.length-1-1; i >= 0; i-=2) {
			int j=ch[i]-'0';
			j=j*2;
			if (j>=10) {
				j-=9;
			}
			sum2+=j;
		}
		
		return sum2;	
	}

	private static int  ji(char[] ch) {
		int sum1=0;
		//倒數第一位爲數組長度減一
		for (int i = ch.length-1; i >=0; i-=2) 
		{
			int j=ch[i]-'0';
			sum1+=j;
		}
		return sum1;
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章