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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张东贤 中级黑马   /  2013-3-21 01:24  /  1437 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张东贤 于 2013-3-21 12:58 编辑

某个公司采用公用电话传递数
据,数据是四位的整数,在传递过
程中是加密的,加密规则如下:每
位数字都加上5,然后用和除以10 的
余数代替该数字,再将第一位和第
四位交换,第二位和第三位交换。
请编写一个方法来实现上述加密算
法。







受到启示,代码中...

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-21 10:39

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 陈圳 于 2013-3-21 08:19 编辑
  1. public static int[] getNums(int number){
  2.                 int length =(new Integer(number)).toString().length();//获取字值的长度,这样可以实现任何位数的加密,而不局限4位
  3.                 int[] arr=new int[length];
  4.                 for(int i=length-1;i>=0;i--){
  5.                         arr[i]=number%10;
  6.                         arr[i]+=5;//规则一每位都+5
  7.                         System.out.println("arr["+i+"]====="+arr[i]);//测试语句
  8.                         arr[i]=(int)arr[i]/10;//规则二用/10余数代替本身.//你的题意有问题,小于10的数除10就没有整数了.而且也无法还原了...
  9.                         number/=10;
  10.                         System.out.println("arr["+i+"]="+arr[i]);//测试语句
  11.                 }
  12.                 for(int i=0;i<length;i++){//开始交换,按照题意做的,暂时想不到在一个循环里解决的办法.开始这个循环是为了实现任何位数
  13.                         for(int j=length-1;j>=0;j--){
  14.                                 if(i+j==(length-1)){
  15.                                         i=i+j;//应该封装成一个方法...
  16.                                         j=i-j;
  17.                                         i=i-j;
  18.                                 }
  19.                         }
  20.                 }
  21.                 return arr;
  22.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报

package com.ccsu.xie;
public class EncryptUtils {
        public static void main(String[] args) {
               
                System.out.println(EncryptUtils.encrypt(4431));
        }
        public static int  encrypt(int etNum){
                String str =String.valueOf(etNum);  //将要加密转换成字符串
                String result="";  //保存加密后的数据
                for(int i=3; i>=0;i--){  //此处循环实现交换
                        int temp = Integer.valueOf(String.valueOf(str.charAt(i))); //获取每一位的数字
                        result+=(temp + 5) % 10;//每位数字都加上5,然后用和除以10 的余数代替该数字
                }
                return Integer.valueOf(result);
               
        }

}

//不知道题意是不是我了解的这样,楼主自己看看符不符合要求吧..

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马