2.字符串加解密
1、对输入的字符串进行加解密,并输出。
2、加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
本题含有多组样例输入。
示例
输入
abcdefg
BCDEFGH
输出
BCDEFGH
abcdefg
分析
1.首先键盘接收l两段字符串,可以用BufferedReader或者是Scanner
2.加密操作,即就是对每个字符进行+1操作,若是超出,则返回第一个位置,即9->0,z->a,Z->A
3.解密操作,即就是对每个字符进行-1操作,若是不够,则返回最后一个位置,即0->9,a->z,A->Z
代码实现
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str1 = sc.next();
String str2 = sc.next();
char[] c1 = str1.toCharArray();
char[] c2 = str2.toCharArray();
System.out.println(addArray(c1));
System.out.println(sArray(c2));
}
}
public static char[] addArray(char[] c) {
for (int i = 0; i < c.length; i++) {
if (c[i] >= 'a' && c[i] <= 'z') {
c[i] = (char) ('A' + ((c[i] - 'a' + 1) % 26));
} else if (c[i] > 'A' && c[i] <= 'Z') {
c[i] = (char) ('a' + ((c[i] - 'A' + 1) % 26));
}
if (c[i] >= '0' && c[i] <= '9') {
if(c[i]!='9')
c[i] = (char) ('0' + ((c[i] - '0')% 9 +1 ) );
else
c[i]=(char)'0';
}
else
c[i]=c[i];
}
return c;
}
public static char[] sArray(char[] c) {
for (int i = 0; i < c.length; i++) {
if (c[i] >= 'a' && c[i] <= 'z') {
c[i] = (char) ('A' + ((c[i] - 'a' - 1)));
} else if (c[i] > 'A' && c[i] <= 'Z') {
c[i] = (char) ('a' + ((c[i] - 'A' - 1)));
}
if (c[i] >= '0' && c[i] <= '9') {
if(c[i]!='0')
c[i] = (char) ('0' + (c[i] - '0' - 1));
else
c[i]=(char)'9';
}
else
c[i]=c[i];
}
return c;
}
}