Как сместить символы массива вправо в 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);
}
}
}