JAVA:二维数组

一、二维数组相关语法

/*
    二维数组:就是元素为一维数组的一个数组。

    格式1:
        数据类型[][] 数组名 = new 数据类型[m][n];

        m:表示这个二维数组有多少个一维数组。
        n:表示每一个一维数组的元素有多少个。

    注意:
         以下格式也可以表示二维数组
            a:数据类型 数组名[][] = new 数据类型[m][n];
            b:数据类型[] 数组名[] = new 数据类型[m][n];

*/
class Array2Demo {
    public static void main(String[] args) {
         //定义一个二维数组
         int[][] arr = new int[3][2];
         //定义了一个二维数组arr
         //这个二维数组有3个一维数组的元素
         //每一个一维数组有2个元素
         //输出二维数组名称
         System.out.println(arr); //地址值    [[[email protected]
         //输出二维数组的第一个元素一维数组的名称
         System.out.println(arr[0]); //地址值    [[email protected]
         System.out.println(arr[1]); //地址值    [[email protected]
         System.out.println(arr[2]); //地址值    [[email protected]
         //输出二维数组的元素
         System.out.println(arr[0][0]); //0
         System.out.println(arr[0][1]); //0
    }
}

---------------------------------------

 1 /*
 2     格式2:
 3         数据类型[][] 数组名 = new 数据类型[m][];
 4
 5         m:表示这个二维数组有多少个一维数组。
 6         列数没有给出,可以动态的给。这一次是一个变化的列数。
 7 */
 8 class Array2Demo2 {
 9     public static void main(String[] args) {
10         //定义数组
11         int[][] arr = new int[3][];
12
13         System.out.println(arr);    //[[[email protected]
14         System.out.println(arr[0]); //null
15         System.out.println(arr[1]); //null
16         System.out.println(arr[2]); //null
17
18         //动态的为每一个一维数组分配空间
19         arr[0] = new int[2];
20         arr[1] = new int[3];
21         arr[2] = new int[1];
22
23         System.out.println(arr[0]); //[[email protected]
24         System.out.println(arr[1]); //[[email protected]
25         System.out.println(arr[2]); //[[email protected]
26
27         System.out.println(arr[0][0]); //0
28         System.out.println(arr[0][1]); //0
29         //ArrayIndexOutOfBoundsException
30         //System.out.println(arr[0][2]); //错误
31
32         arr[1][0] = 100;
33         arr[1][2] = 200;
34     }
35 }

------------------------------------------------------

 1 /*
 2     格式3:
 3         基本格式:
 4             数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
 5         简化版格式:
 6             数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
 7
 8         举例:
 9             int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
10             int[][] arr = {{1,2,3},{4,5},{6}};
11 */
12 class Array2Demo3 {
13     public static void main(String[] args) {
14         //定义数组
15         int[][] arr = {{1,2,3},{4,5},{6}};
16
17         System.out.println(arr);
18         System.out.println(arr[0]);
19         System.out.println(arr[1]);
20         System.out.println(arr[2]);
21
22         System.out.println(arr[0][0]); //1
23         System.out.println(arr[1][0]); //4
24         System.out.println(arr[2][0]); //6
25
26         System.out.println(arr[0][1]); //2
27         System.out.println(arr[1][1]); //5
28         //越界
29         System.out.println(arr[2][1]); //错误
30     }
31 }

二、练习

1、二维数组遍历

 1 /*
 2     需求:二维数组遍历
 3
 4     外循环控制的是二维数组的长度,其实就是一维数组的个数。
 5     内循环控制的是一维数组的长度。
 6 */
 7 class Array2Test {
 8     public static void main(String[] args) {
 9         //定义一个二维数组
10         int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
11
12         //请问谁代表{1,2,3}
13         //arr[0]就是第一个数组
14         //arr[0] = {1,2,3};
15         for(int x=0; x<arr[0].length; x++) {
16             System.out.println(arr[0][x]);
17         }
18         System.out.println("--------------");
19
20         for(int x=0; x<arr[1].length; x++) {
21             System.out.println(arr[1][x]);
22         }
23         System.out.println("--------------");
24
25         for(int x=0; x<arr[2].length; x++) {
26             System.out.println(arr[2][x]);
27         }
28         System.out.println("--------------");
29
30         //用循环改进
31         for(int x=0; x<3; x++) {
32             for(int y=0; y<arr[x].length; y++) {
33                 System.out.print(arr[x][y]+" ");
34             }
35             System.out.println();
36         }
37         System.out.println("--------------");
38
39         //这个时候,注意了,3是我们根据上面的代码得出来的
40         //但是,它不能针对任何的数组都可以这样
41         //所以,我们应该想办法改进
42         //其实,外面的这个循环的长度就是二维数组的长度
43
44         for(int x=0; x<arr.length; x++) {
45             for(int y=0; y<arr[x].length; y++) {
46                 System.out.print(arr[x][y]+" ");
47             }
48             System.out.println();
49         }
50         System.out.println("--------------");
51
52         //用方法改进
53         //调用方法
54         printArray2(arr);
55         System.out.println("--------------");
56
57         //我们再来一个列数是变化的
58         int[][] arr2 = {{1,2,3},{4,5},{6}};
59         printArray2(arr2);
60     }
61
62     /*
63         需求:遍历二维数组
64         两个明确:
65             返回值类型:void
66             参数列表:int[][] arr
67     */
68     public static void printArray2(int[][] arr) {
69         for(int x=0; x<arr.length; x++) {
70             for(int y=0; y<arr[x].length; y++) {
71                 System.out.print(arr[x][y]+" ");
72             }
73             System.out.println();
74         }
75     }
76 }

2、公司销售额求和

 1 /*
 2     公司年销售额求和
 3     某公司按照季度和月份统计的数据如下:单位(万元)
 4     第一季度:22,66,44
 5     第二季度:77,33,88
 6     第三季度:25,45,65
 7     第四季度:11,66,99
 8
 9     分析:
10         A:把题目的数据用二维数组来表示
11             int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
12         B:如何求和呢?
13             求和其实就是获取到每一个元素,然后累加即可。
14         C:定义一个求和变量sum,初始化值是0。
15         D:通过遍历就可以得到每一个二维数组的元素。
16         E:把元素累加即可。
17         F:最后输出sum,就是结果。
18 */
19 class Array2Test2 {
20     public static void main(String[] args) {
21         //把题目的数据用二维数组来表示
22         int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
23
24         //定义一个求和变量sum,初始化值是0。
25         int sum = 0;
26
27         //通过遍历就可以得到每一个二维数组的元素。
28         for(int x=0; x<arr.length; x++) {
29             for(int y=0; y<arr[x].length; y++) {
30                 //把元素累加即可。
31                 sum += arr[x][y];
32             }
33         }
34
35         //最后输出sum,就是结果。
36         System.out.println("一年的销售额为:"+sum+"万元");
37     }
38 }

3、打印杨辉三角

 1 /*
 2
 3     需求:打印杨辉三角形(行数可以键盘录入)
 4
 5     1
 6     1 1
 7     1 2 1
 8     1 3 3 1
 9     1 4 6 4 1
10     1 5 10 10 5 1
11
12     分析:看这种图像的规律
13         A:任何一行的第一列和最后一列都是1
14         B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
15
16     步骤:
17         A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
18           这个n的数据来自于键盘录入。
19         B:给这个二维数组任何一行的第一列和最后一列赋值为1
20         C:按照规律给其他元素赋值
21             从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
22         D:遍历这个二维数组。
23 */
24 import java.util.Scanner;
25
26 class Array2Test3 {
27     public static void main(String[] args) {
28         //创建键盘录入对象
29         Scanner sc = new Scanner(System.in);
30
31         //这个n的数据来自于键盘录入。
32         System.out.println("请输入一个数据:");
33         int n = sc.nextInt();
34
35         //定义二维数组
36         int[][] arr = new int[n][n];
37
38         //给这个二维数组任何一行的第一列和最后一列赋值为1
39         for(int x=0; x<arr.length; x++) {
40             arr[x][0] = 1; //任何一行第1列
41             arr[x][x] = 1; //任何一行的最后1列
42         }
43
44         //按照规律给其他元素赋值
45         //从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
46         for(int x=2; x<arr.length; x++) {
47             //这里如果y<=x是有个小问题的,就是最后一列的问题
48             //所以这里要减去1
49             //并且y也应该从1开始,因为第一列也是有值了
50             for(int y=1; y<=x-1; y++) {
51                 //每一个数据是它上一行的前一列和它上一行的本列之和。
52                 arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
53             }
54         }
55
56         //遍历这个二维数组。
57         /*
58         for(int x=0; x<arr.length; x++) {
59             for(int y=0; y<arr[x].length; y++) {
60                 System.out.print(arr[x][y]+"\t");
61             }
62             System.out.println();
63         }
64         */
65         //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似
66         for(int x=0; x<arr.length; x++) {
67             for(int y=0; y<=x; y++) {
68                 System.out.print(arr[x][y]+"\t");
69             }
70             System.out.println();
71         }
72     }
73 }

4、数据加密

 1 /*
 2     某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,
 3     在传递过程中需要加密,加密规则如下:
 4         首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
 5         最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
 6         然后,把加密后的结果在控制台打印出来。
 7
 8     题目要求:
 9         A:数据是小于8位的整数
10             定义一个int类型的数据
11             int number = 123456;
12         B:加密规则
13             a:首先将数据倒序
14                 结果 654321
15             b:然后将每位数字都加上5,再用和除以10的余数代替该数字
16                 结果 109876
17             c:最后将第一位和最后一位数字交换
18                 结果 609871
19         C:把加密后的结果输出在控制台
20
21         通过简单的分析,我们知道如果我们有办法把这个数据变成数组就好了。
22         不是直接写成这个样子的:
23             int[] arr = {1,2,3,4,5,6};
24
25         如何把数据转成数组呢?
26             A:定义一个数据
27                 int number = 123456;
28             B:定义一个数组,这个时候问题就来了,数组的长度是多少呢?
29                 int[] arr = new int[8]; //不可能超过8
30                 在赋值的时候,我用一个变量记录索引的变化。
31                 定义一个索引值是0
32                 int index = 0;
33             C:获取每一个数据
34                 int ge = number%10
35                 int shi = number/10%10
36                 int bai = number/10/10%10
37
38                 arr[index] = ge;
39                 index++;
40                 arr[index] = shi;
41                 index++;
42                 arr[index] = bai;
43                 ...
44 */
45 class JiaMiDemo {
46     public static void main(String[] args) {
47         //定义一个数据
48         int number = 123456;
49
50         //定义一个数组
51         int[] arr = new int[8];
52
53         //把数据中每一位上的数据获取到后存储到数组中
54         /*
55         int index = 0;
56         arr[index] = number%10; //arr[0]=6;
57         index++;
58         arr[index] = number/10%10; //arr[1]=5;
59         index++;
60         arr[index] = mumber/10/10%10; //arr[2]=4;
61         */
62
63         //通过观察这个代码,我们发现应该是可以通过循环改进的
64         int index = 0;
65
66         while(number > 0) { //number=123456,number=12345,number=1234,number=123,number=12,number=1,number=0
67             arr[index] = number%10; //arr[0]=6,arr[1]=5,arr[2]=4,arr[3]=3,arr[4]=2,arr[5]=1
68             index++;//index=1,index=2,index=3,index=4,index=5,index=6
69             number/=10;//number=12345,number=1234,number=123,number=12,number=1,number=0
70         }
71
72         //然后将每位数字都加上5,再用和除以10的余数代替该数字
73         for(int x=0; x<index; x++) {
74             arr[x] += 5;
75             arr[x] %= 10;
76         }
77
78         //最后将第一位和最后一位数字交换
79         int temp = arr[0];
80         arr[0] = arr[index-1];
81         arr[index-1] = temp;
82
83         //输出数据
84         for(int x=0; x<index; x++) {
85             System.out.print(arr[x]);
86         }
87         System.out.println();
88     }
89 }

以上代码的改进:

 1 /*
 2     把刚才的代码改进一下:
 3         A:把数据改进为键盘录入
 4         B:把代码改进为方法实现
 5
 6
 7         另一个数据的测试:
 8         number:1234567
 9         第一步:7654321
10         第二步:2109876
11         第三步:6109872
12
13     知识点:
14         变量
15         数据类型
16         运算符
17         键盘录入
18         语句
19         方法
20         数组
21 */
22 import java.util.Scanner;
23
24 class JiaMiDemo2 {
25     public static void main(String[] args) {
26         //创建键盘录入对象
27         Scanner sc = new Scanner(System.in);
28
29         //请输入一个数据
30         System.out.println("请输入一个数据(小于8位):");
31         int number = sc.nextInt();
32
33         //写功能实现把number进行加密
34         //调用
35         String result = jiaMi(number);
36         System.out.println("加密后的结果是:"+result);
37     }
38
39     /*
40         需求:写一个功能,把数据number实现加密。
41         两个明确:
42             返回值类型:String 做一个字符串的拼接。
43             参数列表:int number
44     */
45     public static String jiaMi(int number) {
46         //定义数组
47         int[] arr = new int[8];
48
49         //定义索引
50         int index = 0;
51
52         //把number中的数据想办法放到数组中
53         while(number > 0) {
54             arr[index] = number%10;
55             index++;
56             number /= 10;
57         }
58
59         //把每个数据加5,然后对10取得余数
60         for(int x=0; x<index; x++) {
61             arr[x] += 5;
62             arr[x] %= 10;
63         }
64
65         //把第一位和最后一位交换
66         int temp = arr[0];
67         arr[0] = arr[index-1];
68         arr[index-1] = temp;
69
70         //把数组的元素拼接成一个字符串返回
71         //定义一个空内容字符串
72         String s = "";
73
74         for(int x=0; x<index; x++) {
75             s += arr[x];
76         }
77
78         return s;
79     }
80 }
时间: 2024-10-08 10:09:17

JAVA:二维数组的相关文章

java二维数组的常见初始化

public class Test{ public static void main(String[] args){ //第一种: //int[][] arr1 = new int[][]{{1,2}, {2, 3}, {4, 5}}; int[][] arr1 = {{1,2}, {2, 3}, {4, 5}}; System.out.println("arr1的数值:"); for(int i=0; i<3; ++i) for(int j=0; j<2; ++j) Sy

java 二维数组,三维数组 ,糊糙数组,多维数组示例代码

package org.rui.array; import java.util.Arrays; /** * 三维数组示例 * @author lenovo * */ public class ThreeDWithNew { public static void main(String[] args) { int[][][] a=new int[2][2][4]; System.out.println(Arrays.deepToString(a)); } } /** * output: * [[[

java二维数组的初始化及使用其长度

二维数组的初始化 1.静态初始化 int intArray[ ][ ]={{1,2},{2,3},{3,4,5}}; Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同. 2.动态初始化 1) 直接为每一维分配空间,格式如下: arrayName = new type[arrayLength1][arrayLength2]; int a[ ][ ] = new int[2][3]: 2) 从最高维开始,分别为每一维分配空间: arrayNa

java二维数组学习(转)

转自:http://blog.csdn.net/java1992/article/details/5808709,在这里谢过了 /* * java学习: * 二维数组的使用: */public class test { public static void main(String[] args) { //二维数组的声明方式: //数据类型 [][] 数组名称 = new 数据类型 [长度][长度] ; //数据类型 [][] 数组名称 = {{123},{456}} ; /* int [][]

JAVA二维数组小记

入手JAVA第二天 1 //二维数组 2 //数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];3 4 String [][] name = {{"admin","jack"},{"tom","rose"}}; 5 for(int i=0;i<2;i++){ 6 for(int j=0;j<2;j++){ 7 System.out.println(name[i][j]); 8 } 9 } i

java二维数组的定义

//定义二维数组写法1   class numthree { public static void main(String[] args) { float[][] numthree;             //定义一个float类型的2维数组 numthree=new float[5][5];       //为它分配5行5列的空间大小 numthree[0][0]=1.1f;            //通过下标索引去访问     1行1列=1.1 numthree[1][0]=1.2f;  

Java 二维数组

在 Java 中,二维数组与一维数组一样,但是不同于 C 中的二维数组: 1. 在 Java 中,二维数组可以看成是以数组为元素的数组,例如:  int a[][] = {{1,2},{3,4,5,6},{7,8,9}};  易知:a[0] 表示一维数组{1,2}:a[1] 表示一维数组{3,4,5,6}:a[2] 表示一维数组{7,8,9}. 2. Java 中多维数组的声明和初始化应该按照从高维到低维(从左到右)的顺序进行,例如: int a[][] = new int[3][]; a[0]

7.Java二维数组的声明、初始化和引用

二维数组的声明.初始化和引用与一维数组相似,这里不再详讲. 二维数组的定义 type arrayName[ ][ ]; type [ ][ ]arrayName; 只是形式上的差别,大家可以根据自己的习惯来选择. 二维数组的初始化 1.静态初始化     int intArray[ ][ ]={{1,2},{2,3},{3,4,5}}; Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同. 2.动态初始化 1) 直接为每一维分配空间,格式如

java 二维数组的行列长度

在 java 中,其实只有一维数组,而二维数组是在一维数组中嵌套实现的.比如 int[][] a = {{},{},{},{}} 要取行数和某一行的列数可以 : int rowLen = a.length; int colLen = a[0].length; 数组,长度竟然可以是0  ,奇妙 Object[] a = new Object[0]; 原文地址:https://www.cnblogs.com/heyboom/p/9571368.html

java 二维数组 方法知识整理

二维数组定义格式: 第一种:int[][] arr = new int[3][4]; 第二种:int[][] arr = new int[3][]; 第三种:int[][] arr = {{1,2},{3,4,5,6},{7,8,9}}; 二维数组元素遍历: class demo01 { public static void main(String[] args) { int[][] arr={{11,12},{21,22,23},{31,32,33,34}}; for(int i=0;i<ar