java - 如何解密这个字符串

标签 java

给出以下字符串:

String s = "Qba'g sbetrg gb qevax lbhe Binygvar";

我想要的输出是:

Don't forget to drink your ovaltine

我的代码:

public static String decrpyt(String s){

    String ans = "";

    for (int i = 0; i<s.length(); i++) {
        int x = s.charAt(i);

        if (x <= 105) {
            char c = ((char) (x + 13)); 
            ans += c;
        } else { 
            char c = ((char) (x - 13)); 
            ans += c;
        }
    }
    return ans;  
}

它返回:

don4t-forget-to-drink-_our-ovaltine

我需要做什么才能获得所需的输出?

最佳答案

正如评论中提到的,您正在更改所有字符,而不仅仅是字母。仔细考虑您需要修改的字母的字符范围。将 x 声明为 char,这样您就不必考虑实际的数值范围。

A-M => N-Z   Action: += 13
a-m => n-z   Action: += 13
N-Z => A-M   Action: -= 13
n-z => a-m   Action: -= 13
(all others) Action: No change

这可以用三种情况来表达:

if ((x >= 'a' && x <= 'm') || (x >= 'A' && x <= 'M')) {
    // Add 13
} else if ((x >= 'n' && x <= 'z') || (x >= 'N' && x <= 'Z')){
    // Subtract 13
} else {
    // Use as is
}

关于java - 如何解密这个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781201/

相关文章:

java - 如何使我的节点在 JavaFx/FXML 运行时自动调整其内容?

java - 如何验证 Java 日志记录属性文件?

java - 如何使用作为另一个类的函数的参数访问的对象的函数?

java - Spring 启动 -"status":405 ,"error" :"Method Not Allowed"

java - 在 android studio 中,当手机没有互联网时,如何防止缓冲读取器从 url 读取时出现错误

java包不存在gradle构建失败

java - 使用JAVA进行RSA加密/解密

java - 抛出异常或者返回错误信息

java - 将变量传递给另一个类(Java)

java - org.springframework.beans.factory.CannotLoadBeanClassException : Cannot find class [com. Dao.ApplicationDaoImpl] 对于名称为'的bean