【发布时间】:2018-01-22 02:37:26
【问题描述】:
我试图移动数组中的元素并打印每个步骤,直到它们回到原来的位置。数组必须填充随机数,并且不能超过 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 循环:
for ( int b = 0; b <= oldArray.length; b++)
int newArray[] = moveA(oldArray);
printA(oldArray);
printA(newArray)
但它所做的只是打印 4 次。
【问题讨论】:
-
欢迎来到 SO。您的代码的问题在于您将旋转数组分配给循环内的新变量。因为
oldArray永远不会改变它每次迭代都会得到相同的值。请参阅我的答案以获得解决方案。