A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄兴旺 金牌黑马   /  2013-4-8 17:23  /  1228 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄兴旺 于 2013-4-8 19:38 编辑

密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈.
接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
假设渊子原来一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换成YUANzi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,声明:密码中没有空格,而密码中出现的大写字母则边成小写之后往后移一位,如:X,先边成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
输入
输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾。
输出
输出渊子真正的密文。
样例输入
YUANzi1987
样例输出
zvbo941987

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

4 个回复

倒序浏览
附上我蛋疼的代码
  1. import java.util.*;
  2. class  mima
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Scanner cin = new Scanner(System.in);
  7.                 char[] a = new char[100];
  8.                 for (int i=0;i<100;i++ )
  9.                 {
  10.                         if (a[i]>='A'&&a[i]<'Z')
  11.                                 a[i] = a[i] + 33;
  12.                         else if (a[i]=='Z')a[i]='a';
  13.                         else if (a[i]>='a'&&a[i]<='c')a[i]='2';
  14.                         else if (a[i]>='d'&&a[i]<='f')a[i]='3';
  15.                         else if (a[i]>='g'&&a[i]<='i')a[i]='4';
  16.                         else if (a[i]>='j'&&a[i]<='l')a[i]='5';
  17.                         else if (a[i]>='m'&&a[i]<='o')a[i]='6';
  18.                         else if (a[i]>='p'&&a[i]<='s')a[i]='7';
  19.                         else if (a[i]>='t'&&a[i]<='v')a[i]='8';
  20.                         else if (a[i]>='w'&&a[i]<='z')a[i]='9';
  21.                 }
  22.                 System.out.println(a);
  23.         }
  24. }
复制代码
回复 使用道具 举报
  1. public static void main(String[] args)
  2.     {
  3.              char[] ans ={'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a'};
  4.              char[] res ={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9','9'};
  5.    
  6.              Scanner cin = new Scanner(System.in);
  7.              String str = null;
  8.              String Out = null;
  9.              while(cin.hasNext())
  10.              {
  11.                      Out = "";
  12.                      str = cin.next();
  13.                      for(int i=0;i<str.length();i++)
  14.                      {
  15.                              char tmp = str.charAt(i);
  16.                              if(tmp>='a'&&tmp<='z')
  17.                              {
  18.                                      Out+=res[tmp-'a'];
  19.                              }
  20.                              else if(tmp>='A'&&tmp<='Z')
  21.                              {
  22.                                      Out+=ans[tmp-'A'];
  23.                              }
  24.                              else
  25.                              {
  26.                                      Out+=tmp;
  27.                              }
  28.                      }
  29.                      System.out.println(Out);
  30.              }
  31.     }
复制代码
希望你能看得懂......
不是按照你的思路来写的....

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
似水像火 发表于 2013-4-8 18:10
希望你能看得懂......
不是按照你的思路来写的....

我就说嘛 。。
没事 可以学习新技术。。
回复 使用道具 举报
这是我看到这道题目的想法.不管好坏还是给lz看看吧
public class EncryptDemo {
        //定义Map存储相应的字符转换规则
        private static Map<String,Integer> eUtils = new HashMap<String,Integer>();
       
        static{
                eUtils.put("abc", 2);
                eUtils.put("def", 3);
                eUtils.put("ghi", 4);
                eUtils.put("jkl", 5);
                eUtils.put("mno", 6);
                eUtils.put("pqrs", 7);
                eUtils.put("tuv", 8);
                eUtils.put("wxyz", 9);
        }
       
       
        //加密方法
        public static String encrypt(String pwd){
                //定义StringBuilder对象返回加密后的数据
                StringBuilder eKey = new StringBuilder();
                for(int i=0;i<pwd.length();i++){
                        char k = pwd.charAt(i);//获取密码的每个字符
                        if(k>='A' && k<='Z'){  //如果字符是大写字母
                                k+=32;  //变为小写
                                if((char)k>'z'){
                                        k='a';
                                }
                                else{
                                        k+=1;
                                }
                                eKey.append(k);         //保存本次加密字符
                        }else if(k>='a' && k<='z'){
                                //从字符转换规则Map里面依次取出与预加密的字符匹配,匹配成功则预加密字符转换成相应数字
                                Set<String> strs = eUtils.keySet();
                                Iterator<String> it = strs.iterator();  
                                while(it.hasNext()){
                                        String ks = it.next();
                                        int value =eUtils.get(ks); //获取相应字符对应的转换值
                                        if(ks.indexOf(k)!=-1){
                                                eKey.append(value);
                                        }
                                }
                        }else { //表明是数字或其它字符
                                eKey.append(k);
                        }
               
                       
                }
                return eKey.toString();
        }

       
        public static void main(String[] args) {
                String pwd = "YUANzi1987";
                System.out.println(EncryptDemo.encrypt(pwd));  //输出zvbo941987
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马