题解

此题没什么难度,将需要加解密的字符列出来进行处理,另外需要注意边界问题。

代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String plainText = sc.nextLine(); // 明文
            String cipherText = sc.nextLine(); // 密文
            encryptStr(plainText); // 加密
            System.out.println();
            decryptStr(cipherText); // 解密
        }
    }

    // 加密字符串
    public static void encryptStr(String plainText) {
        for (int i = 0; i < plainText.length(); i++) {
            char ch = plainText.charAt(i);
            if (ch >= 'a' && ch < 'z') {
                ch = (char)(ch + 1 - 32); // +1并转为大写
            } else if (ch >= 'A' && ch < 'Z') {
                ch = (char)(ch + 1 + 32); // +1并转为小写
            } else if (ch >= '0' && ch < '9') {
                ch = (char)(ch + 1); // +1
            } else if (ch == 'z') {
                ch = 'A'; // 小写z ==> A
            } else if (ch == 'Z') {
                ch = 'a'; // 大写Z ==> Z
            } else if (ch == '9') {
                ch = '0'; // 9 ==> 0
            }
            System.out.print(ch);
        }
    }

    // 解密字符串
    public static void decryptStr(String cipherText) {
        for (int i = 0; i < cipherText.length(); i++) {
            char ch = cipherText.charAt(i);
            if (ch > 'a' && ch <= 'z') {
                ch = (char)(ch - 1 - 32); // -1并转为大写
            } else if (ch > 'A' && ch <= 'Z') {
                ch = (char)(ch - 1 + 32); // -1并转为小写
            } else if (ch > '0' && ch <= '9') {
                ch = (char)(ch - 1); // -1
            } else if (ch == 'a') {
                ch = 'Z'; // 小写a ==> Z
            } else if (ch == 'A') {
                ch = 'z'; // 大写A ==> z
            } else if (ch == '0') {
                ch = '9'; // 0 ==> 9
            }
            System.out.print(ch);
        }
    }
}