java—检查一个值是否等于另一个值,如果为真,则返回另一个值

luaexgnf  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(382)

大家好,我有个问题,
我正在尝试使用ascii表来加密和解密最终由用户键入的消息。
ascii表格
我这里有基本加密码
当代码到达z或z时,shift分别显示{和[当我试图让代码分别循环回a和a时
z-->a not{z-->a not[
我不太清楚我的措辞,请问您是否需要澄清

n1bvdmb6

n1bvdmb61#

你正在编写的密码是凯撒密码。
下面是我不久前编写的一个实现:

public class Main {

    public static void main(String[] args) {

        System.out.println(caesar("hello", 1));
    }

    public static String caesar(String text, int offset) {

        String output = "";
        char outputchar;

        for (int i = 0; i < text.length(); i++) {
            if (isLetter(text.charAt(i))) {
                outputchar = (char) (text.charAt(i) + offset);

                if (Character.isUpperCase(text.charAt(i))) {
                    if ((!isLetter(outputchar)) || (Character.isLowerCase(outputchar))) {
                        outputchar = (char) (outputchar - 26);
                    }
                } else {
                    if ((!isLetter(outputchar)) || (Character.isUpperCase(outputchar))) {
                        outputchar = (char) (outputchar - 26);
                    }
                }
                output += outputchar;
            } else {
                output += text.charAt(i);
            }
        }
        return output;
    }

    public static boolean isLetter(char letter) {
        return ((letter >= 97) && (letter <= 122) || (letter >= 65) && (letter <= 90));
    }
}

它通过检查 char 在它所属的范围内,包括案例更正。

相关问题