Как один вывод в CodeRunner для возврата без пробелов между словами в Java?

#java #algorithm #caesar-cipher

#java #алгоритм #caesar-cipher

Вопрос:

Напишите алгоритм, который выводит строку без пробелов, используя алгоритм caesar-cipher, в coderunner. Упомянутая лектором строка = «» не добавляет пробелов, потому что символ ASCI 32 добавляет пробел к строке. Я не знаю, как реализовать это в коде, потому что запутался со строкой.концепция длины и как использовать str = в этом коде. ввод 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") }
                          
                        }
 

Комментарии:

1. Всякий раз, когда вы не уверены в назначении, ваше первое средство — всегда спросить инструктора. Вы платите за обучение не просто так. Люди здесь могут только догадываться, что происходит. Вам нужно предположение или окончательный ответ?

2. Я бы попросил помощников преподавателя TA. В некоторых колледжах его нет. Чтобы уточнить мой код. Code Runner не может принимать имя класса или раздел аргументов метода. Code runner может принимать только раздел public String — Return . Программа Code Runner уже предоставляет входные данные, поэтому мне пришлось имитировать coderunner в Eclipse.

Ответ №1:

 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;
}