首页 > 解决方案 > 检查一个值是否等于另一个值,如果是,则返回另一个值

问题描述

大家好,快速java问题,

我正在尝试使用 Ascii 表来加密和解密最终将由用户键入的消息。

ASCII表

我这里有基本加密代码

一旦代码到达 z 或 Z ,当我试图让代码分别循环回 a 和 A 时,移位分别显示 { 和 [

z --> a 不是 { Z --> A 不是 [

请询问您是否需要任何澄清,因为我不太确定我的措辞

标签: javaencryptionascii

解决方案


您正在编程的密码是凯撒密码。

这是我不久前编写的一个实现:

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在它所属的范围内来处理您发布的问题,包括大小写更正。


推荐阅读