gpt4 book ai didi

java - 将数组中的元素移动一个随机数?

转载 作者:行者123 更新时间:2023-12-02 05:51:39 28 4
gpt4 key购买 nike

对于我第二学期的 Java 类(class),我们目前正在开发一个项目,该项目将字符数组移动随机生成的数字。因此,如果计算机生成数字 2 并且字符是“nick”,它将返回“ckni”。我可以弄清楚向前移动元素,但我似乎不知道如何从元素的末尾取出元素并将它们移动到前面。谁能帮我这个?

最佳答案

这里有几种转换方法,具体取决于您开始使用的数据类型。

String

int shift = 2;
String str = "nick";
int pos = str.length() - shift;

// outputs 'ckni'
System.out.println(str.substring(pos, str.length()) + str.substring(0, pos));
<小时/>

List<Character>

List<Character> list = Arrays.asList('n', 'i', 'c', 'k');

Collections.rotate(list, shift);
// outputs [c, k, n, i]
System.out.println(list);
<小时/>

Character[]

Character[] array = {'n', 'i', 'c', 'k'};

Collections.rotate(Arrays.asList(array), shift);
// outputs 'ckni'
System.out.println(Arrays.asList(array));
<小时/>

char[]

char[] carray = {'n', 'i', 'c', 'k'};
char[] rotated = new char[carray.length];
int pos = carray.length - shift;

System.arraycopy(carray, 0, rotated, shift, pos);
System.arraycopy(carray, pos, rotated, 0, shift);
// outputs 'ckni'
System.out.println(rotated);
<小时/>

反向移位

如果你包装shift在模运算符中,它将确保正确的边界,并且还允许您使用负值进行反向移位:

// shifts left by two
int shift = -2;
shift = (shift%str.length() + str.length())%str.length();

关于java - 将数组中的元素移动一个随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23484148/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com