如何在Java中将数组字符移到右侧?

时间:2017-05-22 06:27:57

标签: java arrays string shift

这就是我所拥有的:

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]开始,读取字符,将其向右移动(hi)然后对每个字符执行相同操作在数组中直到它到达终点。

现在,我的代码输出opqrs。我希望它输出ifmmp。如果我将int i = 0循环中的for替换为int i = ch[0],它会从i开始,但它只是输入ijklmno...

我希望它读取h,输出为i,读取e,输出为f,依此类推,直至到达数组末尾。< / p>

2 个答案:

答案 0 :(得分:4)

您在循环中使用循环索引i而不是i字符,这意味着代码的输出不依赖于输入String(除了输出的长度,与输入的长度相同。

更改

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

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

答案 1 :(得分:0)

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