Java语言做译密码问题,为什么AC只有80%

以下是我的问题、报错截图和尝试的代码,求解答

img

1045: 译密码
题目描述
为使电文保密,往往按一定规律将其转换成密文,收报人再按约定的规律将其译回原文。
例如,可以按以下规律将电文变成密码:
将字母A变成E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D,“China!”变成“Glmre!”。

输入格式
输入有若干行,每行一串字符,长度不超过500。

输出格式
输出其相应的密码。

输入样例
China!
important

**输出样例 **
Glmre!
mqtsvxerx
题目出处

import java.util.Scanner;

public class p45 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String s = sc.nextLine();
            String s1 = toLetter(s);
            System.out.println(s1);
        }
    }

    public static String toLetter(String s){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
                if ((c >= 'W' && c <= 'Z') || (c >= 'w' && c <= 'z')){
                    char c1 = (char) (c - 22);
                    sb.append(c1);
                } else {
                    char c1 = (char) (c + 4);
                    sb.append(c1);
                }
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }
}

参考:

public static String toLetter(String s){
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
            if ((c >= 'W' && c <= 'Z') || (c >= 'w' && c <= 'z')){
                char c1 = (char) (c - 22);
                sb.append(c1);
            } else if ((c >= 'A' && c < 'W') || (c >= 'a' && c < 'w')) {
                char c1 = (char) (c + 4);
                sb.append(c1);
            } else if (c == 'W') {
                sb.append('A');
            } else if (c == 'X') {
                sb.append('B');
            } else if (c == 'Y') {
                sb.append('C');
            } else if (c == 'Z') {
                sb.append('D');
            }
        } else {
            sb.append(c);
        }
    }
    return sb.toString();
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^