zoukankan      html  css  js  c++  java
  • Java实现数字密码发生器

    在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了…

    这个程序的任务就是把一串拼音字母转换为6位数字(密码)。我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。

    变换的过程如下:

    第一步. 把字符串6个一组折叠起来,比如wangximing则变为:
    wangxi
    ming

    第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:
    228 202 220 206 120 105

    第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,就再缩位,直到变成一位数字为止。例如: 228 => 2+2+8=12 => 1+2=3

    上面的数字缩位后变为:344836, 这就是程序最终的输出结果!

    要求程序从标准输入接收数据,在标准输出上输出结果。

    输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行字符串,就是等待变换的字符串。
    输出格式为:n行变换后的6位密码。

    例如,输入:
    5
    zhangfeng
    wangximing
    jiujingfazi
    woaibeijingtiananmen
    haohaoxuexi

    则输出:
    772243
    344836
    297332
    716652
    875843

    注意:

    请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!

    在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Main {
        public static ArrayList<String> list = new ArrayList<String>();
        
        public String getResult(String s) {
            int[] A = new int[6];
            for(int i = 0;i < s.length();i++)
                A[i % 6] = A[i % 6] + s.charAt(i);
            for(int i = 0;i < 6;i++) {
                while(A[i] >= 10) {
                    String temp = "" + A[i];
                    int a = 0;
                    for(int j = 0;j < temp.length();j++)
                        a = a + (temp.charAt(j) - '0');
                    A[i] = a;
                }
            }
            StringBuffer t = new StringBuffer("");
            for(int i = 0;i < 6;i++)
                t.append(A[i]);
            return t.toString();
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            for(int i = 0;i < n;i++) {
                String s = in.next();
                list.add(test.getResult(s));
            }
            for(int i = 0;i < n;i++)
                System.out.println(list.get(i));
        }
    }
    
  • 相关阅读:
    UVA 408 (13.07.28)
    linux概念之用户,组及权限
    Java实现 蓝桥杯 历届试题 网络寻路
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 九宫重排
    Java实现 蓝桥杯 历届试题 九宫重排
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077651.html
Copyright © 2011-2022 走看看