Как сместить символы массива вправо в Java?

Вот что у меня есть:

class encoded
{
    public static void main(String[] args)
    {
        String s1 = "hello";
        char[] ch = s1.toCharArray();
        for(int i=0;i<ch.length;i++)
        {
            char c = (char) (((i - 'a' + 1) % 26) + 'a');
            System.out.print(c);
        }
    }
}

До сих пор я преобразовал строку в массив, и я понял, как сдвигать, но теперь я застрял.

Я хочу, чтобы код начинался с ch[0], прочитайте символ, сдвиньте его вправо (h в i), а затем сделайте то же самое для каждого символа в массиве, пока он не достигнет конца.

Прямо сейчас мой код выводит opqrs, Я хочу, чтобы это вывело ifmmp, Если я заменю int i = 0 в for цикл с int i = ch[0]это начинается в i, но тогда это просто входы ijklmno...

Я хочу это прочитать h, вывод как i, читать e, вывод как fи так до тех пор, пока не достигнет конца массива.

2 ответа

Вы используете индекс цикла i вместо iый символ в вашем цикле, что означает, что вывод вашего кода не зависит от ввода String (хорошо, за исключением длины вывода, которая равна длине ввода).

+ Изменить

char c = (char) (((i - 'a' + 1) % 26) + 'a');

в

char c = (char) (((ch[i] - 'a' + 1) % 26) + 'a');

Замещать i - 'a' + 1 с ch[i] - 'a' + 1

class encoded {

   public static void main(String[] args)
   {
     String s1 = "hello";
     char[] ch = s1.toCharArray();
     for(int i=0;i<ch.length;i++)
     { 
        char c = (char) (((ch[i] - 'a' + 1) % 26) + 'a');
        System.out.print(c);
     }
   }
}
Другие вопросы по тегам