实现编码器

7fyelxc5  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(495)

我必须在“functionality.java”类中实现一个名为“encodecaesar”的静态公共方法,该方法使用caesar加密对文本进行编码,我对java完全是个新手
签名:encodecaesar(string s,int val):string。
该方法获取一个字符串值和一个整数值作为输入参数。字符串值中的字母(字符)将被整数值移位。为了简单起见,我可以假设只有字母,没有空格、数字或特殊字符。
在执行加密之前,应将字符串值转换为小写。该方法应返回一个字符串,其中每个字母都已根据指定的整数值移动。
例子: encodeCaesar("Ac",3) 返回“df”。如果给定的整数值小于0或大于26,则应返回空字符串。

public class Functionality {

public static void main(字符串[]args){

}

公共静态字符串caesar(字符串s,int val){

char[] newString = s.toCharArray();
            for(int i = 0; i < s.length(); i++){
                int newChar = newString[i]+val;
                while(newChar > 65+26) // 65 = A, 26 = number of letters in the alphabet
                    newChar -= 26;

                newString[i] = (char) (newChar);
zwghvu4y

zwghvu4y1#

你可以区分 lowercase 以及 uppercase 字母,因为装订不一样。在我的代码中,我使用了两个循环,每种情况一个,如果它是自己的上界,那么它会减小值。如果你在你的范围内(使用负片 val ),你只需要 +26 创建时 newChar ```
public static String caesar(String s, int val) {
char[] newString = s.toCharArray();
for (int i = 0; i < s.length(); i++) {
int newChar = newString[i] + val + 26;

    // Handle uppercase letters
    while (Character.isUpperCase(newString[i]) && newChar >= 65 + 26) {
        newChar -= 26;
    }

    // Handle lowecase letters
    while (Character.isLowerCase(newString[i]) && newChar >= 97 + 26) {
        newChar -= 26;
    }

    newString[i] = (char) (newChar);
}

return String.valueOf(newString);

}

测验

System.out.println(caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 3).equals("DEFGHIJKLMNOPQRSTUVWXYZABC"));
System.out.println(caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", -3).equals("XYZABCDEFGHIJKLMNOPQRSTUVW"));

将输入视为 `lowercase` 删除大写部分并添加 `.toLowerCase()` ```
public static String caesar(String s, int val) {
    char[] newString = s.toLowerCase().toCharArray();
    for (int i = 0; i < s.length(); i++) {
        int newChar = newString[i] + val + 26;
        // Handle lowecase letters
        while (Character.isLowerCase(newString[i]) && newChar >= 97 + 26) {
            newChar -= 26;
        }
        newString[i] = (char) (newChar);
    }
    return String.valueOf(newString);
}

相关问题