Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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 将数组元素移动一定量?_Java_Arrays_Encryption - Fatal编程技术网

Java 将数组元素移动一定量?

Java 将数组元素移动一定量?,java,arrays,encryption,Java,Arrays,Encryption,我有一个问题,我有一个数组包含字母表中的字母。我想知道将数组元素移动一定量的最佳方法是什么。例如,如果键是2 及 我该怎么做才能在转型之后 array = "C,D,E,F,G..." 最简单的解决方案是if语句吗 谢谢这应该可以做到: char[] input = ... char[] result = new char[input.length]; int shift = 2; for(int i = 0; i < input.length; i++) { result[i

我有一个问题,我有一个数组包含字母表中的字母。我想知道将数组元素移动一定量的最佳方法是什么。例如,如果键是2

我该怎么做才能在转型之后

array = "C,D,E,F,G..."
最简单的解决方案是
if
语句吗

谢谢

这应该可以做到:

char[] input = ...
char[] result = new char[input.length];
int shift = 2;

for(int i = 0; i < input.length; i++)
{
    result[i] = input[(i + shift) % input.length];
}
char[]输入=。。。
char[]结果=新字符[input.length];
int-shift=2;
for(int i=0;i
如您所见,您需要一个
for
循环。一个
if
就不行了。它会将所有
char
s2向左移动

结果将是:
['C','D',…,'Z','A','B']

此方法称为

编辑:如果需要旋转阵列,请查看以下方法:

或:

Character[]arr={'a','b','c','d'};
列表字符=数组.asList(arr);
集合。旋转(字符,-2);
arr=chars.toArray(新字符[0]);

您必须使用数组吗?集合如何,如列表

List<?> list = Arrays.asList('A', 'B', 'C', 'D', 'E');
Collections.rotate(list, -2);
System.out.println(list);
或者,使用primative类包装器数组。。。e、 g.字符、整数等。这仍然允许通过write-through array.asList()方法使用集合

    final Character[] array = { 'A', 'B', 'C', 'D', 'E' };
    Collections.rotate(Arrays.asList(array), -2);
    System.out.println(Arrays.toString(array));
输出

[C, D, E, A, B]
[C, D, E, A, B]
你试过了吗

final Character[]vals={'A','B','C','D','E'};
最终列表=Arrays.asList(VAL);
集合。轮换(列表,-2);
/*VAL将进行轮换*/
System.out.println(Arrays.toString(vals));
。。。生产(见):

[C、D、E、A、B]


你说你有一个数组,但你的变量实际上看起来像是一个包含逗号分隔值的字符串?那么在移位之后,a和B是在列表的末尾还是被截断了?@monkybonk05根据对我答案的评论,OP希望它们在列表的末尾。OP,这是数组旋转的适当术语,如果您需要
A
B
显示在“shift”之后的列表末尾。再看看我的答案。如果你不用数组而用链表呢。然后,要进行移位,只需更改头指针。我不知道如何在java中实现它,所以我不会回答这个问题。如果我输入了input.length-2,那么会得到一个24大小的数组。如果我希望它的大小是26,那么Z映射到B呢?很抱歉没有说清楚。@AkshaiShah,我明白了。更新了我的答案。忘记问模输入.length做什么了?@AkshaiShah这用于在数组开始时重新启动,当您到达末尾时。否则你会得到一个
ArrayIndexOutOfBoundException
。我明白了,这有一个合适的名称吗?我想这就可以了,只是想知道from=2,to=1,这是否意味着我的新数组将从B开始,以a结束?它将抛出一个
IllegalArgumentException
。如果您需要从>到,那么编写自己的实现会容易得多。对不起,我的朋友,必须使用数组
[C, D, E, A, B]
    final Character[] array = { 'A', 'B', 'C', 'D', 'E' };
    Collections.rotate(Arrays.asList(array), -2);
    System.out.println(Arrays.toString(array));
[C, D, E, A, B]
final Character[] vals = { 'A', 'B', 'C', 'D', 'E' };
final List<Character> list = Arrays.asList(vals);
Collections.rotate(list, -2);
/* vals will be rotated */
System.out.println(Arrays.toString(vals));