精华内容
下载资源
问答
  • 二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作...

    为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。

    创建二维数组

    Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。声明二维数组的语法如下:

    type array[][];
    type[][] array;

    其中,type 表示二维数组的类型,array 表示数组名称,第一个中括号表示行,第二个中括号表示列。

    下面分别声明 int 类型和 char 类型的数组,代码如下:

    
     
    1. int[][] age;
    2. char[][] sex;

    初始化二维数组

    二维数组可以初始化,和一维数组一样,可以通过3种方式来指定元素的初始值。这 3 种方式的语法如下:

    array=new type[][]{值 1,值 2,值 3,…,值 n};
    array=new type[][]{new 构造方法(参数列),…};
    type[][] array={{第1行第1列的值,第1行第2列的值,…},{第2行第1列的值,第2行第2列的值,…},…};

    例 1

    使用第一种方式声明 int 类型的二维数组,然后初始化该二维数组。代码如下:

    
     
    1. int[][] temp;
    2. temp=new int[][]
    3. {
    4. {1,2},{3,4}
    5. };


    上述代码创建了一个二行二列的二维数组 temp,并对数组中的元素进行了初始化。图 1 所示为该数组的内存结构。
     


    图1 二维数组内存结构


    使用第二种方式声明 int 类型的二维数组,然后初始化该二维数组。代码如下:

    
     
    1. int[][] temp;
    2. temp=new int [][]
    3. {
    4. {new int(1),new int(2)},{new int(3),new int(4)}
    5. };


    使用第三种方式声明 int 类型的二维数组,并且初始化数组。代码如下:

    
     
    1. int[][] temp={{1,2},{3,4}};

    获取单个元素

    在上节使用 3 种方式创建并初始化了一个二行二列的 int 类型数组 temp。当需要获取二维数组中元素的值时,也可以使用下标来表示。语法如下:

    array[i-1][j-1];


    其中,array 表示数组名称,i 表示数组的行数,j 表示数组的列数。例如,要获取第二行第二列元素的值,应该使用 temp[1][1]来表示。这是由于数组的下标起始值为 0,因此行和列的下标需要减 1。

    例 2

    通过下标获取 class_score 数组中第二行第二列元素的值与第四行第一列元素的值。代码如下:

    
     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{10.0,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    4. System.out.println("第二行第二列元素的值:"+class_score[1][1]);
    5. System.out.println("第四行第一列元素的值:"+class_score[3][0]);
    6. }


    执行上述代码,输出结果如下:

    第二行第二列元素的值:98.0
    第四行第一列元素的值:99.5

    获取全部元素

    在一维数组中直接使用数组的 length 属性获取数组元素的个数。而在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数。

    如果要获取二维数组中的全部元素,最简单、最常用的办法就是使用 for 语句。

    例 3

    使用 for 循环语句遍历 double 类型的 class_score 数组的元素,并输出每一行每一列元素的值。代码如下:

    
     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5 }};
    4. for(int i=0;i<class_score.length;i++)
    5. { //遍历行
    6. for(int j=0;j<class_score[i].length;j++)
    7. {
    8. System.out.println("class_score["+i+"]["+j+"]="+class_score[i][j]);
    9. }
    10. }
    11. }


    上述代码使用嵌套 for 循环语句输出二维数组。在输出二维数组时,第一个 for 循环语句表示以行进行循环,第二个 for 循环语句表示以列进行循环,这样就实现了获取二维数组中每个元素的值的功能。

    执行上述代码,输出结果如下所示。

    class_score[0][0]=100.0
    class_score[0][1]=99.0
    class_score[0][2]=99.0
    class_score[1][0]=100.0
    class_score[1][1]=98.0
    class_score[1][2]=97.0
    class_score[2][0]=100.0
    class_score[2][1]=100.0
    class_score[2][2]=99.5
    class_score[3][0]=99.5
    class_score[3][1]=99.0
    class_score[3][2]=98.5

    例 4

    假设有一个矩阵为 5 行 5 列,该矩阵是由程序随机产生的 10 以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:

    
     
    1. public class Test11
    2. {
    3. public static void main(String[] args)
    4. {
    5. //创建一个二维矩阵
    6. int[][] matrix=new int[5][5];
    7. //随机分配值
    8. for(int i=0;i<matrix.length;i++)
    9. {
    10. for(int j=0;j<matrix[i].length;j++)
    11. {
    12. matrix[i][j]=(int)(Math.random()*10);
    13. }
    14. }
    15. System.out.println("下面是程序生成的矩阵\n");
    16. //遍历二维矩阵并输出
    17. for(int k=0;k<matrix.length;k++)
    18. {
    19. for(int g=0;g<matrix[k].length;g++)
    20. {
    21. System.out.print(matrix[k][g]+"");
    22. }
    23. System.out.println();
    24. }
    25. }
    26. }


    在该程序中,首先定义了一个二维数组,然后使用两个嵌套的 for 循环向二维数组中的每个元素赋值。其中,Math.random() 方法返回的是一个 double 类型的数值,数值为 0.6、0.9 等,因此乘以 10 之后为 10 以内的整数。最后又使用了两个嵌套的 for 循环遍历二维数组,输出二维数组中的值,从而产生矩阵。

    运行该程序的结果如下所示。

    34565
    96033
    48741
    10583
    63985

    获取整行元素

    除了获取单个元素和全部元素之外,还可以单独获取二维数组的某一行中所有元素的值,或者二维数组中某一列元素的值。获取指定行的元素时,需要将行数固定,然后只遍历该行中的全部列即可。

    例 5

    编写一个案例,接收用户在控制台输入的行数,然后获取该行中所有元素的值。代码如下:

    
     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    4. Scanner scan=new Scanner(System.in);
    5. System.out.println("当前数组只有"+class_score.length+"行,您想查看第几行的元素?请输入:");
    6. int number=scan.nextInt();
    7. for(int j=0;j<class_score[number-1].length;j++)
    8. {
    9. System.out.println("第"+number+"行的第["+j+"]个元素的值是:"+class_score[number-1][j]);
    10. }
    11. }


    执行上述代码进行测试,输出结果如下所示。

    当前数组只有4行,您想查看第几行的元素?请输入:
    3
    第3行的第[0]个元素的值是:100.0
    第3行的第[1]个元素的值是:100.0
    第3行的第[2]个元素的值是:99.5

    获取整列元素

    获取指定列的元素与获取指定行的元素相似,保持列不变,遍历每一行的该列即可。

    例 6

    编写一个案例,接收用户在控制台中输入的列数,然后获取二维数组中所有行中该列的值。代码如下:

    
     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    4. Scanner scan=new Scanner(System.in);
    5. System.out.println("您要获取哪一列的值?请输入:");
    6. int number=scan.nextInt();
    7. for(int i=0;i<class_score.length;i++)
    8. {
    9. System.out.println("第 "+(i+1)+" 行的第["+number+"]个元素的值是"+class_score[i][number]);
    10. }
    11. }


    执行上述代码进行测试,如下所示。

    您要获取哪一列的值?请输入:
    2
    第 1 行的第[2]个元素的值是99.0
    第 2 行的第[2]个元素的值是97.0
    第 3 行的第[2]个元素的值是99.5
    第 4 行的第[2]个元素的值是98.5
    展开全文
  • 二维数组

    2020-12-22 09:15:41
      数组可以分为一维数组、二维数组、多维数组...二维数组的第一个元素下标表示元素所在,第二个下标表示元素所在列。   Java中的二维数组是数组的数组,即它是一个特殊的一维数组,它的每一个元素是一个一维数组

      数组可以分为一维数组、二维数组、多维数组。在实际项目中,二维数据是不太推荐用的,而多维数组基本是不允许使用的。多维数组在使用的过程中,不太好理解,不太好去拆分,因为有很多限制问题,比如下标。
      因此在数组的学习中,掌握一维数组和二维数组即可。

    二维数组的理解

      二维数组类似Excel表结构,Excel表的信息是以行和列的形式组织的。二维数组的第一个元素下标表示元素所在行,第二个下标表示元素所在列。
      Java中的二维数组是数组的数组,即它是一个特殊的一维数组,它的每一个元素是一个一维数组。

    int[][] arr = { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 } };
    

      如定义的数组arr,它是长度为3的一维数组,arr中每个元素都是一个长度为3的一维数组。

      二维数组并不要求每一个元素的数组长度相同。例如,下面代码中的定义的二维数组也是可以的。

    int[][] arr = { { 1, 2 }, { 2, 3, 4, 5 }, { 3, 4, 5, 6, 7 } };
    

      上面代码定义的arr是一个长度为3的一维数组,它的第一个元素是长度为2的一维数组,第二个元素是长度为4的一维数组,第三个元素是长度为5的一维数组。

    创建

    声明

      以下三种声明方式都可以声明二维数组,推荐第一种声明方式。

    数组元素类型[][] 数组名字;
    数组元素类型[] 数组名字[];
    数组元素类型 数组名字[][];
    

      示例:

    int[][] arr1;
    int[] arr2[];
    int arr3[][];
    

      和一维数组相同的是,如果只是完成上面的声明过程,数组是不能使用的,因为还没有给它分配内存空间,此时arr1、arr2、arr3都是null。

    声明的同时初始化

      二维数组也有和一维数组对应的3种声明时初始化的方式。
      例如:

    int[][] arr1 = new int[2][3];
    int[][] arr2 = new int[2][];
    arr2[0] = new int[2];
    arr2[1] = new int[3];
    int[][] arr3 = new int[][] { { 1, 2 }, { 1, 2, 3 } };
    int[][] arr4 = { { 1, 2 }, { 1, 2, 3 } };
    

      如果二维数组的每个元素的数组长度相同,可以采用arr1这种方式,此时数组元素的值是对应类型的默认值,也可以采用arr3和arr4这种直接将数值对应元素的值输入的方式。
      如果二维数组的每个元素的数组长度不同,可以采用arr2的方式,此时数组元素的值是对应类型的默认值,也可以采用arr3和arr4这种直接将数值对应元素的值输入的方式。

    先声明,后初始化

      和一维数组一样,如果是先声明后初始化的情况下,不能使用上面的arr4数组的方式。
    在这里插入图片描述

    补充

      刚才我们碰到了这样一条语句 int[][] arr2 = new int[2][]; 这条语句表示此时,arr2有两个元素,每个元素都是数组类型的默认值——null。

    int[][] arr2 = new int[2][];
    System.out.println(arr2[0]);
    System.out.println(arr2[1]);
    

      结果:

    null
    null
    

    判空

      在一维数组中,我们列举了一维数组有变量、没对象,有变量、有对象但是长度为0的情况。现在思考一下,二维数组有变量、没对象和有变量、有对象但是长度为0的情况。

    int[][] arr1;// 有变量、没对象
    int[][] arr2 = new int[][] {};//有变量、有对象、长度为0
    
    展开全文
  • C++二维数组的定义 C++中定义二维数组的一般格式: 类型标识符 数组名[常量表达式] [常量表达式] 例如: int array[3][4]; 表示数组名为array,类型为整型数组,有34列,12元素。 在C++中,我们可以把二维数组...

    C++二维数组

    C++的二维数组是指具有两个下标的数组,有些数据要依赖于两个因素才能惟一地确定,因此才会引入二维数组。

    C++二维数组的定义

    C++中定义二维数组的一般格式:

    类型标识符 数组名[常量表达式] [常量表达式]
    

    例如:

    int array[3][4];
    

    表示数组名为array,类型为整型数组,有3行4列,12个元素。

    在C++中,我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。

    C++中二维数组中元素排列的顺序是:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。

    和C语言一样,C++同样允许使用多维数组,但是开发中很少用到。

    C++二维数组的引用

    上一节一维数组中小林已经讲过,在C++中数组必须先定义,然后才能使用,而且只能逐个引用数组元素的值而不能一次引用整个数组中的全部元素的值。

    二维数组元素的表示形式为

    数组名[下标] [下标]
    

    下标可以是整型表达式,数组元素是左值,可以出现在表达式中,也可以被赋值。

    C++使用数组元素时,应该注意下标值应在已定义的 数组大小的范围内。

    C++二维数组的初始化

    分行给二维数组赋初值:

    int array[2][3]={{1,2,3},{4,5.6}};
    

    可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值:

    int array[2][3]={1,2,3,4,5,6};
    

    可以对部分元素赋初值,它的作用是只对各行第1列的元素赋初值,其余元 素值自动置为0。

    int array[2][3]={{1},{2}};
    

    可以对各行中的某一元素赋初值:

    int array[2][3]={{1},{4,5,6}}
    

    如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定, 但第二维的长度不能省:

    int array[][3]={{1,2,3},{4,5.6}};
    

    C++在定义数组和引用数组元素时采用:数组名[][],这种两个方括号的方式,对数组初始化时十分有 用,它使概念清楚,使用方便不易出错。

    经典案例:C++实现用二数组输出1-6。

    #include<iostream>//预处理
    using namespace std;//命名空间 
    int main()//主函数 
    {
      int array[2][3]={{1,2,3},{4,5,6}};//定义二维数组且赋初值 
      int i,j;//定义整型变量 
      for(i=0;i<2;i++)//外层for循环限制行数 
      {
        for(j=0;j<3;j++)//内层for循环限制列数 
        {
          cout<<array[i][j]<<" ";//输出这个数 
        }
        cout<<endl;//一行结束换行 
      }
      return 0;//函数返回值为0 
    }
    

    执行本程序之后,会输出:

    1 2 3
    4 5 6
    
    --------------------------------
    Process exited after 2.068 seconds with return value 0
    请按任意键继续. . .
    

    C++二维数组输出0-6

    更多案例可以go公众号:C语言入门到精通

    展开全文
  • 首先说一下二维数组与指针吧,要访问一个数组的元素a[1][2],我们应该写...思路:用malloc创建一个nn列的二维数组,首先创建一个有n个元素的指针数组(为二维数组的行),在创建n个其他数据类型的数组即可。 代码...

    首先说一下二维数组与指针吧,要访问一个数组的元素a[1][2],我们应该写成这样
    (a+1)+2,而单独的(a+1)表示第一行(下标为1,本来应当为数组的第2行)。从指针的角度看,二维数组是由一个指针数组和一个其他数据类型的数组组成。

    思路:用malloc创建一个n行n列的二维数组,首先创建一个有n个元素的指针数组(为二维数组的行),在创建n个其他数据类型的数组即可。
    代码如下:(不知道为什么代码块加不进去,只能看图片了)
    测试:创建一个对角线为1的二维数组(单位矩阵)
    在这里插入图片描述

    在这里插入图片描述
    运行结果如下

    在这里插入图片描述

    展开全文
  • 注意:无论是几维的数组下标都是从0开始 稀疏数组的用途: 下图中有1111列2元素 下图中0号元素表示该数组有1111列2...将所要转换的二维数组array1存入到新创建的稀疏数组array2中,下标为0的元素存入的是该数组
  • Java二维数组

    2021-06-01 22:57:10
    二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作...
  • 二维数组总结

    千次阅读 2014-07-31 22:55:51
    只有一个下标的数组称为一维数组,有两个下标的数组称为二维数组,有n个下标的数组称为n维数组 二维数组的定义 类型说明符 数组名[常量表达式1][常量表达式2] = {值1,值2...}; 常量表达式1表示第一维下标的长度,表达式...
  • C语言二维数组的使用

    2020-02-23 10:43:55
    二维数组的定义 二维数组定义的一般形式是: dataType arrayName[length1][length2]; 其中,dataType 为数据类型,arrayName 为数组名,length1 为第一下标的长度,length2 为第二维下标的长度。 我们可以将二维...
  • J2SE:二维数组

    2020-02-14 15:38:19
    二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在Java中二维数组被看作...
  • 二维数组常用于表示表,表中的信息以和列的形式组织,第一个下标代表元素所在的,第二个下标代表元素所在的列。 二维数组的创建 二维数组可以看作是特殊的一维数组,因此,二维数组的创建同样有两种方式。 1....
  • 第一个[3]表示这个二维数组有3,这3下标分别为0 1 2,第二个[3]表示这个二维数组有3列,这三列的下标分别是0 1 2。说这个的目的是说明【数组的下标都是从0开始】 二维数组的赋值: 第一种赋值方法: int arr[3...
  • 1.3 Java二维数组详解

    2020-09-21 14:56:52
    二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作...
  • 二维数组常用于表示表,表中的信息以和列的形式组织,第一个下标代表元素所在的,第二个下标代表所在的列。 一、二维数组的创建  1、先声明,再用 new 运算符进行内存分配  声明语法格式: 数组元素的...
  • C语言之二维数组

    2018-01-03 14:56:23
    1、二维数组的定义二位数组定义的一般形式是: 类型说明符 数组名[常量表达式1][常量表达式2] 其中常量表达式1表示第一下标的长度,常量表达式2表示第二维下标的长度。例如:int a[3][4];说明了一个四列的...
  • 基础篇——二维数组

    2018-04-04 14:54:47
    二维数组二维数组在编程中应用广泛,二维数组常 用来表示表,表中信息以和列形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在列。表这种结构在编程中是必不可少数据结构。在java中,二维...
  • C语言基础-----二维数组,三维数组

    万次阅读 2015-07-13 20:04:05
    一 二维数组 1.二维数组的定义: 数据类型 数组名[][列] ={ ...a[0] 对应的元素是1,2,3 二维数组的元素也是通过下标来访问的,和列的下标都是从0开始的, a[0][0] 表示数组a的第一个元素. 3.二维数组的元素的个数 =
  • java的二维数组

    2016-07-18 22:30:03
    二维数组常用于表示表,表中信息以和列形式组织,第一个下标表示元素所代表的行,第二个下标表示元素所在列. package com.charpter06; public class Matnx {  public static void main...
  • 1.二维数组的定义 二维数组定义的一般形式是: 类型说明符 数组名[常量表达式1][常量表达式2] 其中常量表达式1表示第一下标的长度,常量表达式2 表示第二维下标的长度。例如: 说明了一个四列的...
  • 【C语言】二维数组

    2020-07-30 16:14:36
    二维数组的定义 ...由于二维数组的在内存中是线性存放的,因此可以将所有的数据写在一个花括号内: 例:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 为了更直观地表示元素的分布,可以用大括号将每一的元
  • C语言二维数组的定义和引用

    千次阅读 2016-11-06 22:15:49
    二维数组的定义二维数组定义的一般形式是:  类型说明符 数组名[常量表达式1][常量表达式2] 其中常量表达式1表示第一下标的长度,常量表达式2 表示第二维下标的长度。例如: 复制格式化复制 int a[3]...
  • 这数据结构学习day01五子棋游戏功能概述具体思路稀疏数组转换...2.棋盘存储压缩使用是将二维数组转化为一个稀疏数组存储减少存储空间 稀疏数组 数组下标0开始 处理方式: 1.第一行记录一共几行几列和多少个不同
  • 二维数组的定义: float pay[3][6] 以上定义了一个float型的二维数组,第一维有3个元素,第二维有6个元素。每一维的长度分别用一对方括号括起来。 二维数组定义的一般形式为: 类型说明符 数组名【常量表达式】...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 230
精华内容 92
关键字:

二维数组的第一个下标表示行