精华内容
下载资源
问答
  • 下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。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
    展开全文
  • 【总结】一维数组、二维数组的声明和初始化 1.一维数组的声明和初始化:  1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行  1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行    数组一旦...

    【总结】一维数组、二维数组的声明和初始化

    1.一维数组的声明和初始化:
     1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
     1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
     
              数组一旦初始化完成,其长度就确定了。

    示范代码:

    int num;//声明
    num = 10;//初始化
    int id = 1001;//声明 +初始化
    		
    int[] ids;//声明
    //1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
    ids = new int[]{1001,1002,1003,1004};
    //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
    String[] names = new String[5];
    
    //如下也是正确的写法:
    int[] arr4 = {1,2,3,4,5};//类型推断
    

    错误的写法:

    int[] arry1 = new int[];
    int[5] arry2 = new int[5];
    int[] arry3 = new int[3]{1,2,3};
    

    2.二维数组的声明和初始化:
     2.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
     2.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
    对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组。

    示范代码:

    //1.二维数组的声明和初始化
    int[] arr = new int[]{1,2,3};//一维数组
    //静态初始化
    int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
    //动态初始化1
    String[][] arr2 = new String[3][2];
    //动态初始化2
    String[][] arr3 = new String[3][];
    
    //如下也是正确的写法:
    int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
    int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};
    

    错误的写法:

    int[][] arr4 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};
    String[][] arr5 = new String[][2];
    String[4][3] arr2 = new String[][];
    
    展开全文
  • 二维数组正确初始化规则

    千次阅读 多人点赞 2019-03-19 20:30:50
    最近刷题总在二维数组初始化这里栽跟头,接下来总结一点二维数组的初始化规则以便记忆 这里提一句一维数字代表行,二维数字代表列 arr[2][3]就是创建两行三列的数组 二维数组在初始化的时候可以分行进行初始化 int...

    最近刷题总在二维数组初始化这里栽跟头,接下来总结一点二维数组的初始化规则以便记忆
    这里提一句一维数字代表行,二维数字代表列
    arr[2][3]就是创建两行三列的数组

    1. 二维数组在初始化的时候可以分行进行初始化
      int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };

    2. 二维数组也可以进行放在一起进行初始化
      int arr[2][3] = { 1, 2, 3, 4, 5, 6 };

    3. 二维数组在初始化的时候可以进行部分初始化
      int arr[2][3] = { { 1 }, { 2 } };
      这个初始化就和1, 0, 0, 2, 0, 0初始化一样(一般初始值为0)
      int arr[2][3] = { 1, 2, 3 };
      这个就是1, 2, 3, 0,0,0

    4. 二维数组的初始化可以省略第一维的数字,但是不能省略第二维的数字
      int arr[][3] = { { 1 }, { 2 }};
      这里可以看出也是用1, 0, 0, 2, 0, 0初始化
      int arr[][3] = { 1 ,2 ,3, 4 };
      这里用这种方式进行初始化的时候,一维的数字大小是由这个初始化数字的数量多少来取的,例如这个例子是4个数字那么就是4/3+1(如果有余数再加1)

    这里我们来练习一下

    在这里插入图片描述
    A选项省略了二维数字 错误
    C选项定义了2行数据,但实际初始化输入了3行 错误
    D选项不能使用{}定义

    在这里插入图片描述
    这里定义的数组是 1,0,0,0/ 3,2,0,0/ 4,5,6,0/ 0,0,0,0

    在这里插入图片描述
    A选项 1,0,2,0
    B选项 1,2 / 3,4
    C选项 1,0,2,3
    D选项 未对二维数字定义 错误

    展开全文
  • 正确初始化二维数组

    千次阅读 2013-08-26 18:42:37
    以下不能对二维数组正确初始化语句是_C__。 A static int a[2][3]={0}; B static int a[ ][3]={{1,2},{0}}; C static int a[2][3]={{1,2},{3,4},{5,6}} D static int a[ ][3]={1,2,3,4,5,6}; 为...

    二维数组正确初始化


    以下不能对二维数组正确初始化的语句是_C__。

    A static int a[2][3]={0};

    B static int a[ ][3]={{1,2},{0}};

    C static int a[2][3]={{1,2},{3,4},{5,6}}

    D static int a[ ][3]={1,2,3,4,5,6};

    为什么是C呢?

    首先要明确几点:
    1、二维数组可按行分段赋值,也可按行连续赋值。{{1,2},{0}}是按行分段赋值,{1,2,3,4,5,6}是按行连续赋值。

    2、可以只对部分元素赋初值,对于int型数组,未赋初值的元素自动取0值。

    3、如对全部元素赋初值,则第一维的长度可以不给出。

    A,B,D选项符合以上条件,唯有C选项,是按行分段赋值,给出了3行数据(最外层大括号内有3组分段的大括号),而定义的第一维长度是2,所以是不正确的。
    展开全文
  • 1.二维数组可以看成以数组为元素的数组; 2.Java中二维数组的声明和初始化应按照从高维到低维的顺序进行. 实例: 静态初始化: Array2.java: 程序代码 public class Array2 { public static void main...
  • 一、C语言一维数组初始化: (1)在定义数组时数组元素赋以初值。如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始化后,a[0]=0,a[1]=1,… ,a[9]=9。 (2)初始化时...
  • 维数组初始化方法 方式一:静态初始化 数据类型[] 数组名 = {元素1,元素2,元素3...};//必须在一个语句中完成,不能分开两个语句写 举例: 定义存储1,2,3,4,5整数的数组容器 int[] arr = {1,2,3,...
  • Java二维数组的声明和初始化

    万次阅读 2013-09-01 15:29:41
    1.二维数组可以看成以数组为元素的数组;  2.Java中二维数组的声明和初始化应按照从高维到低维的顺序进行.  实例:  静态初始化:  Array2.java:  程序代码  public class Array2 { public static void...
  • 二维数组初始化规则

    万次阅读 多人点赞 2018-03-27 14:24:16
    二维数组初始化的形式为: 数据类型 数组名[整常量表达式][ 整常量表达式]={ 初始化数据 }; 在{ }中给出各数组元素的初值,各初值之间用逗号分开。把{ }中的初值依次赋给各数组元素。 有如下几种初始化方式: ...
  • C 语言支持多维数组。多维数组声明的一般形式如下:...二维数组多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:type arrayName [ x...
  • 二维数组初始化

    2015-10-03 17:06:34
    二维数组初始化的形式为:  数据类型 数组名[整常量表达式][ 整常量表达式]={ 初始化数据 };  在{ }中给出各数组元素的初值,各初值之间用逗号分开。把{ }中的初值依次赋给各数组元素。  有如下几种初始化...
  • 二维字符数组一般用于存储和处理多... //定义了一个3行10列的二维字符数组c由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符串。二维字符数组的初始...
  • 如下申请的二维数组,用memset初始化 int **vis=new int*[N]; for(i=0;i<N;i++){ vis[i] = new int [M]; } 问题 在拓展里面,动态申请的二维数组vis;不能通过如下语句初始化, memset(vis,0,sizeof(int)...
  • 一维二维数组初始化

    2020-09-02 14:03:04
    定义了数组array,并未对数组进行初始化 静态int array[100] = {1,2}; 定义并初始化数组array 动态int* array = new int[100]; delete []array; 分配了长度为100的数组array 动态int* array = new int[100...
  • 二维数组不知道第二维的长度的情况下怎么进行初始化?redim语句可以初始化不定长的二维数组么?
  • 因为每次初始化字符数组的时候都有点问题,所以特意发一篇博客提醒一下自己。 二维字符数组的定义 二维字符数组的定义格式...通常情况下,二维数组的每一行分别使用一个字符串进行初始化。 例如: char c[3][8]={{"app
  • 二维数组初始化

    万次阅读 2019-09-26 10:32:19
    (1)二维数组初始化 int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; int a[3][4]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} } ; 这三者赋值方式等价; 这个赋值方法...
  • java之二维数组初始化

    千次阅读 2016-11-23 20:41:26
    二维数组的格式: 二维数组的内存图: 二维数组的例子:
  • leetcode 二维数组初始化问题 发现可以用如下语句初始化二维数组 int dp[m][n]; 存疑,待解答
  • 今天设计碰到需要例化32...如果要对二维数组初始化,只能用read file从文本文件读进来的方式或者用generate 来对数组初始化;   用read file的方式如下(文本文件为2进制,每个数据占据一行,例如11001111): r...
  • 二维数组定义及初始化

    万次阅读 2016-06-13 17:04:56
    #include #include using namespace std;... int a[3][2] = {(0,1),(2,3),(4,5)};//注意逗号表达式 int *p; p = a[0]; cout return 0; } #include #include using namespace std; int
  • C语言总结第七章、数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例二维数组及多维数组二维数组的定义二维数组元素的引用二维数组元素的初始化程序举例字符数组和字符串字符数组 第七章、数组 ...
  • 昨天在用FBS200 指纹采集芯片采集到一个二维数组数据后,利用串口传输上来的数据是以十六进制的数据格式表示的二维矩阵,比如“FF” 、“BD” 、“5C ”等等这样的形式,而对于一幅灰度图像,一般都是在0 ~255 之间...
  • c语言二维数组如何初始化1 有两种方法(1)在定义时可以直接赋值来初始化(2)在定义后可以为其元素一个个来赋值2 示例1234567891011121314151617181920212223242526272829#include《stdio.h》void display(int arr[2]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,764
精华内容 18,705
关键字:

以下不能对二维数组a进行正确初始化的语句是