这就是我所拥有的:
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
,依此类推,直至到达数组末尾。< / p>
答案 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);
}
}
}