我试图移动数组中的元素并打印每个步骤,直到它们回到其原始位置。该数组必须用随机数填充,并且不能超过15的大小。当发生移位时,我通过创建一个新数组来完成任务。如果有人有更好的建议,请告诉我。我已经完成了数组和移位部分的操作,但是似乎无法弄清楚如何重复它。这是我想出的:
public static void main(String[] args) {
System.out.println("Enter size: ");
Scanner s = new Scanner(System.in);
int p = s.nextInt();
if (p > 15) {
System.out.println("Too much to handle!");
}
int oldArray[] = new int [p];
for (int i = 0; i<oldArray.length;i++) {
oldArray[i]=(int)(Math.random()*10);
}
int newArray[] = moveA(oldArray);
printA(oldArray);
printA(newArray);
}
public static int[] moveA(int[] array1) {
int[] array2 = new int[array1.length];
for (int i = 0; i < array2.length - 1; i++) {
array2[i+1] = array1[i];
}
array2[0] = array1[array1.length - 1];
return array2;
}
public static void printA(int[] arr) {
System.out.println(Arrays.toString(arr));
}
代码显示如下:
Enter size:
4
[1, 5, 9, 3]
[3, 1, 5, 9]
香港专业教育学院试图做一个循环:
for ( int b = 0; b <= oldArray.length; b++)
int newArray[] = moveA(oldArray);
printA(oldArray);
printA(newArray)
但它所做的只是打印4次。
移位的次数将与数组的大小相同。所以你真的只需要一个for
循环:
int[] original = ...;
int[] current = original;
for (int i = 0; i < original.length; i++) {
current = moveA(current);
printA(current);
}
随机数可能会生成具有重复序列的数组,该序列会在整个周期完成之前返回到原始位置。如果您需要考虑到这种情况:
int[] current = moveA(original);
while (!Array.equals(current, orginal)) {
printA(current);
current = moveA(current);
}
最后,Java 8+为您提供了一种生成随机数数组的更快方法。下面的代码将生成一个范围为0-9的5个整数的数组:
int[] original = new Random().ints(5, 0, 10).toArray();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句