由1维数组产生二维数组

由一维数组产生二维数组
题目描述
【问题描述】
    给一维数组输入M个整数,假设M=6,数组元素分别为 7   4   8   9   1   5 ,
    要求建立一个如下数组(矩阵):  

7   4   8   9   1   5
4   8   9   1   5   7
8   9   1   5   7   4 
9   1   5   7   4   8 
1   5   7   4   8   9 
5   7   4   8   9   1

输入
【输入样例】 
  6
  7 4 8 9 1 5  

输出
【输出样例】
7 4 8 9 1 5
4 8 9 1 5 7
8 9 1 5 7 4
9 1 5 7 4 8
1 5 7 4 8 9
5 7 4 8 9 1
最后一个数据后面没有空格

样例输入
6
7 4 8 9 1 5
样例输出
7 4 8 9 1 5
4 8 9 1 5 7
8 9 1 5 7 4
9 1 5 7 4 8
1 5 7 4 8 9
5 7 4 8 9 1

求实现方法~~
------最佳解决方案--------------------
public class TestArray {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[]{7,4,8,9,1,5};
new TestArray().testArray(arr);
}

private void testArray(int[] arr){
for (int i = 0; i < arr.length; i++) {
int[] temp=new int[arr.length];
if(i==0){
temp=arr;
}else{
for (int j = 0; j < temp.length; j++) {
int index=(i+j)%arr.length;
temp[j]=arr[index];
}
}
String str="";
for (int j = 0; j < temp.length; j++) {
str+=temp[j]+" ";
}
System.out.println(str);
}
}
}

------其他解决方案--------------------
package test;

import java.util.Scanner;

public class TestArray {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
System.out.print("请输入一维数组的个数:");
int n = read.nextInt();
int[] array = new int[n];
System.out.print("请输入一维数组的元素(各个元素以空格隔开):");
for (int i = 0; i < n; i++) {
array[i]=read.nextInt();
}
System.out.println("一维数组产生的二维数组如下:");
new TestArray().testArray(array);
}

private void testArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int[] temp = new int[arr.length];
if (i == 0) {
temp = arr;
} else {
for (int j = 0; j < temp.length; j++) {