实现编码器

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

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

  1. public class Functionality {

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

  1. }

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

  1. char[] newString = s.toCharArray();
  2. for(int i = 0; i < s.length(); i++){
  3. int newChar = newString[i]+val;
  4. while(newChar > 65+26) // 65 = A, 26 = number of letters in the alphabet
  5. newChar -= 26;
  6. 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;

  1. // Handle uppercase letters
  2. while (Character.isUpperCase(newString[i]) && newChar >= 65 + 26) {
  3. newChar -= 26;
  4. }
  5. // Handle lowecase letters
  6. while (Character.isLowerCase(newString[i]) && newChar >= 97 + 26) {
  7. newChar -= 26;
  8. }
  9. newString[i] = (char) (newChar);
  10. }
  11. return String.valueOf(newString);

}

  1. 测验

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

  1. 将输入视为 `lowercase` 删除大写部分并添加 `.toLowerCase()` ```
  2. public static String caesar(String s, int val) {
  3. char[] newString = s.toLowerCase().toCharArray();
  4. for (int i = 0; i < s.length(); i++) {
  5. int newChar = newString[i] + val + 26;
  6. // Handle lowecase letters
  7. while (Character.isLowerCase(newString[i]) && newChar >= 97 + 26) {
  8. newChar -= 26;
  9. }
  10. newString[i] = (char) (newChar);
  11. }
  12. return String.valueOf(newString);
  13. }
展开查看全部

相关问题