Java 按k移位数组
我正在开发一个小型java程序,它非常基本,我的一个函数通过给定的键移动字母表。我已经让它工作了,但是它移错了方向,我怎么能让它移到另一个方向呢Java 按k移位数组,java,Java,我正在开发一个小型java程序,它非常基本,我的一个函数通过给定的键移动字母表。我已经让它工作了,但是它移错了方向,我怎么能让它移到另一个方向呢 public static char[] ourAlphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; public char[] shiftAlphabet(
public static char[] ourAlphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
public char[] shiftAlphabet(int key) {
int length = ourAlphabet.length;
char[] result = new char[length];
for (int i=0; i < length; i++)
{
result[(i+key+26)%length] = ourAlphabet[i];
}
return result;
}
我猜这很简单,但它把我弄糊涂了
比如,;
有钥匙19;
HIJKLMNOPQRSTUVXYZABCDEFG
什么时候应该生产;
TUVWXYZABCDEFGHIJKLMNOPQRS改变为:
result[i] = ourAlphabet[(i+key)%length];
如果使用result[i-key+26%长度]=ourAlphabet[i]
但是,如果长度!=26这仍然会给出错误的结果
因此,我将以长度替换26
result[(i-key+length)%length] = ourAlphabet[i];
您是否尝试过按-键替换+键?它现在以哪种方式移动?您希望它以哪种方式移动?请注意,您可以通过保存和交换排序中的值来限制自己使用ourAlphabet数组。结果中的字符尚未初始化。这可能会覆盖字符。for循环中需要一个临时变量。硬编码值是一种糟糕的做法。
result[(i-key+length)%length] = ourAlphabet[i];