黑马程序员技术交流社区
标题:
求助,用面向对象思维
[打印本页]
作者:
张东贤
时间:
2013-3-21 01:24
标题:
求助,用面向对象思维
本帖最后由 张东贤 于 2013-3-21 12:58 编辑
某个公司采用公用电话传递数
据,数据是四位的整数,在传递过
程中是加密的,加密规则如下:每
位数字都加上5,然后用和除以10 的
余数代替该数字,再将第一位和第
四位交换,第二位和第三位交换。
请编写一个方法来实现上述加密算
法。
受到启示,代码中...
作者:
陈圳
时间:
2013-3-21 08:17
本帖最后由 陈圳 于 2013-3-21 08:19 编辑
public static int[] getNums(int number){
int length =(new Integer(number)).toString().length();//获取字值的长度,这样可以实现任何位数的加密,而不局限4位
int[] arr=new int[length];
for(int i=length-1;i>=0;i--){
arr[i]=number%10;
arr[i]+=5;//规则一每位都+5
System.out.println("arr["+i+"]====="+arr[i]);//测试语句
arr[i]=(int)arr[i]/10;//规则二用/10余数代替本身.//你的题意有问题,小于10的数除10就没有整数了.而且也无法还原了...
number/=10;
System.out.println("arr["+i+"]="+arr[i]);//测试语句
}
for(int i=0;i<length;i++){//开始交换,按照题意做的,暂时想不到在一个循环里解决的办法.开始这个循环是为了实现任何位数
for(int j=length-1;j>=0;j--){
if(i+j==(length-1)){
i=i+j;//应该封装成一个方法...
j=i-j;
i=i-j;
}
}
}
return arr;
}
复制代码
作者:
谢达
时间:
2013-3-21 08:45
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);
}
}
//不知道题意是不是我了解的这样,楼主自己看看符不符合要求吧..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2