Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按k移位数组_Java - Fatal编程技术网

Java 按k移位数组

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(

我正在开发一个小型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(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];