使用caesar-cipher算法将不含空格的字符串输出到coderunner的写入算法。讲师提到的string+= "“没有添加空格,因为ASCI字符32向字符串添加了一个空格。我不知道如何将其实现到代码中,因为我混淆了string.length概念以及如何在此代码中使用字符串+=。输入encrypt2(“我们是人吗”,2)输出: ctgygjwocp?
public class Tester {
public String encrypt(String plainText, int offset) {
String cipher = new String("");
char[] arr = plainText.toCharArray();
for (int i = 0; i<arr.length; i++){
int numericalVal = (int) arr[i];
if(Character.isUpperCase(arr[i])) {
cipher += (char) (((numericalVal+offset-65) %26) +65);
} else if (numericalVal == 32){
cipher+=arr[i];
} else {cipher += (char) (((numericalVal+offset-97) %26) +97);
}
}
return cipher;
}
public static void main(String[] args) {
String cipher +="";
system.out.println("are we human") }
}发布于 2021-03-15 23:47:44
public static String encrypt(String plainText, int offset) {
String cipher = "";
char[] arr = plainText.toCharArray();
for (char c : arr) {
if (Character.isUpperCase(c)) {
cipher += (char) (((c + offset - 65) % 26) + 65);
} else if (c == 32){
cipher+=""; //<---- append nothing if space
} else {
cipher += (char) (((c + offset - 97) % 26) + 97);
}
}
return cipher;
}您也可以执行plainText = plainText.replaceAll(“","");,而不必检查是否有32个字符。
public static String encrypt(String plainText, int offset) {
String cipher = "";
plainText = plainText.replaceAll(" ", "");
char[] arr = plainText.toCharArray();
for (char c : arr) {
if (Character.isUpperCase(c)) {
cipher += (char) (((c + offset - 65) % 26) + 65);
} else {
cipher += (char) (((c + offset - 97) % 26) + 97);
}
}
return cipher;
}https://stackoverflow.com/questions/66640774
复制相似问题