完整代码结构
package edu.seig;import java.util.Arrays;
import java.util.Random;public class test {public static void main(String[] args) {// 完整实现代码}
}
初始化一维数组
// 定义一个包含0-15的一维数组
int[] tempArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
随机打乱数组顺序
// 创建随机数生成器
Random r = new Random();// 遍历数组进行随机打乱
for (int i = 0; i < tempArr.length; i++) {// 获取随机索引int randomIndex = r.nextInt(tempArr.length);// 交换当前位置和随机位置的数据int temp = tempArr[randomIndex];tempArr[randomIndex] = tempArr[i];tempArr[i] = temp;
}
创建二维数组
// 创建4×4的二维数组
int[][] data = new int[4][4];
核心方法一:使用除法和取模运算填充二维数组
// 遍历一维数组,使用除法和取模运算填充二维数组
for (int i = 0; i < tempArr.length; i++) {data[i / 4][i % 4] = tempArr[i];
}
核心方法二:使用双重循环填充二维数组
// 使用双重循环填充二维数组
int index = 0;
for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {data[i][j] = tempArr[index];index++;}
}
遍历打印二维数组
// 遍历并打印二维数组
for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {System.out.print(data[i][j] + " ");}System.out.println();
}
主要功能
- 将0-15的数字随机打乱
- 将打乱后的数据填充到4×4的二维数组中
- 提供两种不同的填充方法
- 打印最终的二维数组结果
关键点说明
- 随机打乱算法:使用Fisher-Yates洗牌算法,通过随机交换实现数组元素的随机排列
- 维度转换方法:方法一使用数学运算(除法和取模),方法二使用双重循环遍历
- 数组遍历:使用嵌套循环遍历二维数组,按行优先顺序打印数据
使用场景
- 数字华容道游戏初始化
- 随机数矩阵生成
- 数据加密中的位置打乱
- 教学演示数组操作
注意事项
- 确保一维数组长度是二维数组行列数的乘积
- 随机打乱时注意索引范围
- 打印时注意格式化输出,保持对齐