转移元素并打印每一步

谁也没有

我试图移动数组中的元素并打印每个步骤,直到它们回到其原始位置。该数组必须用随机数填充,并且不能超过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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章