• 输入银行卡号码


    package cn.dlpu.lby;
    
    import java.util.Scanner;
    
    public class Xinyongkahaoma {
    
    	/*
    	当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,
    	因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
    	该校验的过程:
    	1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
    	2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
    	3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
    	例如,卡号是:5432123456788881
    	则奇数、偶数位(用红色标出)分布:5432123456788881
    	奇数位和=35
    	偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
    	最后35+35=70 可以被10整除,认定校验通过。
    	请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。
    	比如,用户输入:356827027232780
    	程序输出:成功
    	*/
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc = new Scanner(System.in);
    		String str = sc.nextLine();
    		char[] cc = str.toCharArray();
    		cal(cc);
    	}
    	//将字符串存到数组中
    	private static void cal(char[] cc) {
    		// TODO Auto-generated method stub
    		int[] n = new int[cc.length+1];
    		int j =1;
    		for(int i = cc.length-1;i>=0;i--){
    			n[j++] = cc[i]-'0';
    		}
    		if(test(n))
    			System.out.println("成功!");
    		else
    			System.out.println("失败!");
    		
    	}
    	//判断是否合理
    	private static boolean test(int[] n) {
    		// TODO Auto-generated method stub
    		int even = 0;
    		int odd = 0;
    		for(int i = 1;i<n.length;i++){
    			if(i%2 == 0){
    				int temp = n[i]*2;
    				if(temp<10){
    					even += temp;
    				}
    				
    				else{
    					temp = temp-9;
    					even += temp;
    				}
    			}
    			
    			else{
    				odd += n[i];
    			}
    		}
    		
    		int total = even + odd;
    		if(total%10 == 0)
    			return true;
    		return false;
    		
    	}
    
    }
    


  • 相关阅读:
    回顾初心
    团队作业6(代码复审+事后诸葛亮)
    Alpha阶段项目复审(鸽牌开发小分队)
    事后诸葛亮(鸽牌开发小分队)
    团队作业5
    第七篇Scrum冲刺博客
    第六篇Scrum冲刺博客
    第五篇Scrum冲刺博客
    第四篇Scrum冲刺博客
    第三篇Scrum冲刺博客
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3144845.html
Copyright © 2020-2023  润新知