从网上找到一份编程练习题,我决定将里面的题目全都做一遍。
/*
题目:编写一个加密类,在其中实现对字符数组的加密和解密方法。
加密原理是:
加密后的字符数组的第一个字符是原字符数组的最后一个字符,
其余的每个字符是对应的原字符数组中的前一个字符的值加上3。
比如:{‘w’,’e’,’i’,’c’,’o’,’m’,’e’},末尾的字符为’e’,
{‘w’,’e’,’i’,’c’,’o’,’m’}依次加上3后成为{‘z’,’h’,’l’,’f’,’r’,’p’},
故加密后的结果为{‘e’,‘z’,’h’,’l’,’f’,’r’,’p’}
*/
/*
分析:主要是使用面向对象的思想。但是我面向对象学得很烂,基本上思考方式还是面向过程的。
*/
class SuanFaDemo {
public static void main(String[] args) {
System.out.println("------------测试加密功能----------");
char[] ch_1={'w','e','i','c','o','m','e'}; //待加密串
SuanFa jiaMi=new SuanFa(ch_1);
System.out.println("待加密的字符串为:");
jiaMi.printArray(); //输出待加密串
System.out.println("加密后的字符串为:");
SuanFa newJiaMi=jiaMi.encode(); //加密
newJiaMi.printArray(); //输出加密串
System.out.println("------------测试解密功能----------");
char[] ch_2={'e','z','h','l','f','r','p'}; //待解密串
SuanFa jieMi=new SuanFa(ch_2);
System.out.println("待解密的字符串为:");
jieMi.printArray(); //输出待解密串
System.out.println("解密后的字符串为:");
SuanFa newJieMi=jieMi.decode(); //解密
newJieMi.printArray(); //输出解密串
}
}
class SuanFa {
private char[] ch;
public SuanFa(){
}
public SuanFa(char[] ch){
this.ch=ch;
}
//加密
public SuanFa encode(){
char last=ch[ch.length-1]; //保存最后一个字符
//将第0~ch.length-2个字符向后移动一位
for (int i=ch.length-2; i>=0; i--){
ch[i+1]=ch;
}
//从第1~ch.length-1角标的字符+3
for (int i=1; i<=ch.length-1; i++){
int temp=ch+3;
if (temp>122){ //如果大于'z'
temp=temp-26; //重新回到'a'
}
ch=(char)temp;
}
ch[0]=(char)last; //将第0个元素补齐
return new SuanFa(ch);
}
//解密
public SuanFa decode(){
char first=ch[0]; //获取第一个字符
//将第1~ch.length-1个字符向前移动一位
for (int i=0; i<=ch.length-2; i++){
ch=ch[i+1];
}
//从0~ch.length-2角标的字符-3
for (int i=0; i<=ch.length-2; i++){
int temp=ch-3;
if (temp<97){ //如果小于'a'
temp=temp+26; //重新回到'z'
}
ch=(char)temp;
}
ch[ch.length-1]=first;
return new SuanFa(ch);
}
//打印串
public void printArray(){
System.out.print("{");
for (int i=0; i<ch.length; i++){
if (i<ch.length-1){
System.out.print("\'"+ch+"\',");
}else{
System.out.print("\'"+ch+"\'}");
}
}
System.out.println();
}
}
/*
输出结果:
------------测试加密功能----------
待加密的字符串为:
{'w','e','i','c','o','m','e'}
加密后的字符串为:
{'e','z','h','l','f','r','p'}
------------测试解密功能----------
待解密的字符串为:
{'e','z','h','l','f','r','p'}
解密后的字符串为:
{'w','e','i','c','o','m','e'}
*/
|