我必须在“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);
1条答案
按热度按时间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;
}
System.out.println(caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 3).equals("DEFGHIJKLMNOPQRSTUVWXYZABC"));
System.out.println(caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", -3).equals("XYZABCDEFGHIJKLMNOPQRSTUVW"));