java -- 二维数组

打印 上一主题 下一主题

主题 967|帖子 967|积分 2901

基本概念

在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。
Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。
创建及初始化
  1. // 创建方式和数组相似 第一个中括号表示行,第二个中括号表示列
  2. // 表示创建了拥有3个子数组且每个子数组都有两个元素的二维数组
  3. int[][] arrarr1 = new int[3][2];
  4. // 表示创建了拥有3个子数组, 但子数组全部为null 的二维数组
  5. int[][] arrarr2 = new int[3][];
  6. // 静态初始化, 创建二维数组并进行赋值操作
  7. int[][] arrarr3 = new int[][]{{1,23},{23,56,1},{1,4,7}};
  8. int[][] arrarr4 = {{1,23},{23,56,1},{1,4,7}};
  9. // 特殊写法!!!
  10. int[] x, y[]; // 此处 x是一维数组, y是二维数组
复制代码
元素的获取
  1. // 获取单个元素
  2. System.out.println(arrarr3[1][2]);
  3. // 1
  4. // 查看arrarr2数组的元素
  5. for (int[] arr : arrarr2) {
  6.     System.out.println(arr);
  7. }
  8. /*
  9. 获取到arrarr2中数组的地址值
  10. null
  11. null
  12. null
  13. */
  14. for (int[] arr: arrarr3) {
  15.     for (int a: arr) {
  16.         System.out.print(a + " ");
  17.     }
  18.     System.out.println();
  19. }
  20. /*
  21. 1 23
  22. 23 56 1
  23. 1 4 7
  24. */
复制代码
为子数组赋值
  1. arrarr2[0] = new int[2];
  2. arrarr2[1] = new int[4];
  3. arrarr2[2] = new int[1];
  4. for (int[] arr : arrarr2) {
  5.     for (int tmp : arr) {
  6.         System.out.print(tmp + "\t");
  7.     }
  8.     System.out.println();
  9. }
  10. /*
  11. 0    0   
  12. 0    0    0    0   
  13. 0   
  14. */
复制代码
练习

二维数组打印一个10行的杨辉三角
  1. /*
  2. 1
  3. 1 1
  4. 1 2 1
  5. 1 3 3 1
  6. 1 4 6 4 1
  7. ...
  8. 第一行一个元素, 第n行有n个元素
  9. 每行的第一个元素和第二个元素都是1
  10. 从第三行开始 对于非第一个和最后一个元素的元素:
  11. */
  12. yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
复制代码
  1. int[][] yangHui = new int[10][];
  2. for (int i = 0; i < 10; i++) {
  3.     yangHui[i] = new int[i + 1];
  4.     for (int j = 0; j < yangHui[i].length; j++) {
  5.         if (j == 0 || j == yangHui[i].length - 1) {
  6.             yangHui[i][j] = 1;
  7.         } else {
  8.             yangHui[i][j] = yangHui[i - 1][j - 1] + yangHui[i - 1][j];
  9.         }
  10.     }
  11. }
  12. for (int i = 0; i < yangHui.length; i++) {
  13.     for (int j = 0; j < yangHui[i].length; j++) {
  14.         System.out.print(yangHui[i][j] + "\t");
  15.     }
  16.     System.out.println();
  17. }
复制代码
假设有一个矩阵为5行5列,该矩阵是由程序随机产生的100以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:
  1. public class Test{
  2.     public static void main(String[] args){
  3.         int[][] matrix = new int[5][5];
  4.         for(int i = 0; i < matrix.length; i++) {
  5.             for(int j = 0; j < matrix[i].length; j++) {
  6.                 matrix[i][j] = (int)(Math.random() * 100);
  7.             }
  8.         }
  9.         for(int i = 0; i < matrix.length; i++) {
  10.             for(int j = 0; j < matrix[i].length; j++) {
  11.                 System.out.print(matrix[i][j] + "\t");
  12.             }
  13.             System.out.println();
  14.         }
  15.     }
  16. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表