当前位置:   article > 正文

JAVA二维数组的概述、定义格式、遍历、求和、杨辉三角、参数传递、数组加密_二维数组的定义java11

二维数组的定义java11

一,二维数组

1,概述

  • 二维数组实际上是一个元素是一维数组的数组。(烟)
  • 一包烟好比是一维数组,一条烟就好比是二维数组了。

2,二维数组的定义格式

格式一:数据类型[][] 数组名 = new 数据类型[x][y];

  • x表示数据二维数组中一维数组的个数
  • y表示每一个一维数组中的元素个数
    int [][] arr = new int[3][2];
  • 解释
      定义了一个二维数组arr
      这个数组中有三个一维数组,名称是arr[0]、arr[1]、arr[2]
      每个一维数组中有两个元素,可以使用arr[x][y]来获取元素
  • 注意:以下格式也可以表示二维数组
      数据类型 数组名[][] = new 数据类型[x][y];
      数据类型[] 数组名[] = new 数据类型[x][y];
      以下定义的区别:
    int x;
    int y;
    int x,y;
    int[] x;
    int[] y[];
    int[] x, y[];
 class Demo{
	public static void main(String[] args){
		int[] x, y[];
		x = new int[3];
		y = new int[3][2];
		System.out.println(x);
		System.out.println(y);
		//定义一个二维数组
		int[][] arr = new int[3][2];
		//数组数组名
		System.out.println(arr);
		//数组二维数组中的元素
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		//二维数组中一维数组的元素
		System.out.println(arr[0][0]);
		System.out.println(arr[0][1]);
		
		System.out.println(arr[1][0]);
		System.out.println(arr[1][1]);
		
		System.out.println(arr[2][0]);
		System.out.println(arr[2][1]);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

在这里插入图片描述

格式二:数据类型[][] 变量名 = new 数据类型[x][];

  • x表示二维数组中一维数组的个数
  • 这次没给一维数组的元素个数,需要动态给出
    int[][] arr = new int[3][];
    arr[0] = new int[4];
    arr[1] = new int[2];
    arr[2] = new int[3];
class Demo{
	public static void main(String[] args){
		int[][] arr = new int[3][];
		System.out.println(arr);
		//数组二维数组中的元素
		System.out.println(arr[0]);//null
		System.out.println(arr[1]);//null
		System.out.println(arr[2]);//null
		//给一维数组分配空间
		arr[0] = new int[4];
		arr[1] = new int[2];
		arr[2] = new int[3];
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		//给第二个一位数的元素赋值
		arr[1][0] = 55;
		arr[1][1] = 66;
		//arr[1][2] = 77;
		
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

在这里插入图片描述

格式三:数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};

  • 简化版
    数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
    int[][] arr = {{1,2,3},{4,5},{5}};
class Demo{
	public static void main(String[] args){
		int[][] arr = {{1,2,3},{4,5},{5}};
		//数组数组名
		System.out.println(arr);
		//数组二维数组中的元素
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		
		//二维数组中一维数组的元素
		System.out.println(arr[0][0]);
		System.out.println(arr[0][1]);
		System.out.println(arr[0][2]);
		
		System.out.println(arr[1][0]);
		System.out.println(arr[1][1]);
		
		System.out.println(arr[2][0]);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在这里插入图片描述

二,二维数组的常见操作

1,遍历

  • 依次输出二维数组中每一个一维数组中的元素
class Demo{
	public static void main(String[] args){
		int[][] arr = {{1,2,3},{4,5},{5,6,7,8}};
		/*
		一维数组的遍历你会,上面的数组中,谁可以表示
		第一个一维数组 arr[0]
		第二个一维数组 arr[1]
		第三个一维数组 arr[2]
		*/
		/*
		//第一个一维数组 arr[0]
		for(int i=0;i<arr[0].length;i++){
			System.out.println(arr[0][i]);
		}
		System.out.println("---------------------");
		//第二个一维数组 arr[1]
		for(int i=0;i<arr[1].length;i++){
			System.out.println(arr[1][i]);
		}
		System.out.println("---------------------");
		//第三个一维数组 arr[2]
		for(int i=0;i<arr[2].length;i++){
			System.out.println(arr[2][i]);
		}
		System.out.println("---------------------");
		*/
		//用循环改进
		/*
		3是我们发现二维数组中有3个一维数组,
		但是不是所有的二维数组的个数都是3
		我们发现外层for的3实际上是二维数组的长度
		*/
		//for(int j=0;j<3;j++){
			/*
		for(int j=0;j<arr.length;j++){
			for(int i=0;i<arr[j].length;i++){
				System.out.println(arr[j][i]);
			}	
			System.out.println("---------------------");
		}
		*/
		//这是一个完成特定功能的代码,需要改写成方法
		printTwoArray(arr);
		
		int[][] arr2 = {{11,23,33},{4,5,66},{6,7,8}};
		printTwoArray(arr2);
	}
	/*
	返回值:void
	参数:int[][] arr
	*/
	public static void printTwoArray(int[][] arr){//地址值
		for(int i = 0; i < arr.length; i++){
			for(int j = 0; j < arr[i].length; j++){
				if(j == arr[i].length - 1){
					System.out.print(arr[i][j]);
				}else{
					System.out.print(arr[i][j]+",");
				}
			}
			System.out.println();
		}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

2,二维数组的求和

/*
某个公司按照季度和月份统计的收入额如下:(单位万元)
	第一季度:100   150  300
	第二季度:90   120  140
	第三季度:50   150  330
	第四季度:200   350  500
求出这个公司的年收入总额是多少?
如果我们把这些数据用二维数组来表示
int[][] arr = {{100,150,300},{90,120,140},{50,150,330},{200,350,500}};
求和:需要获取每一个元素然后累加

定义一个求和变量 sum  默认值是  0
遍历获取每一个二维数组中的每一个一维数组中的每一个元素
累加
最后输出sum即可
*/
class Demo{
	public static void main(String[] args){
		int[][] arr = {{100,150,300},{90,120,140},{50,150,330},{200,350,500}};
		int sum = 0;
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				sum += arr[i][j];
			}
		}
		System.out.println("总额是:"+sum+"万元");
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

3,经典案例(打印杨辉三角

 /*
杨辉三角(键盘控制输出的行数)
1
1	1
1	2	1
1	3	3	1
1	4	6	4	1
......
规律:
	任意一行的第一个和最后一个都是1
	从第三行开始,每一个数据都是它上一行前一列和
	它上一行的本列数据之和
可以把它先看作是一个二维数组

先定义一个二维数组。如果行数n,我们先把列数也看成n
	int[][] arr = new int[5][5];
	这个n将来来自键盘输入
通过规律赋值
遍历输出(按照99乘法表的方式)
*/
import java.util.Scanner;
class Demo9{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你要打印的行数:");
		int h = sc.nextInt();
		//根据h创建二维数组
		int[][] arr = new int[h][h];
		//按照规律赋值
		//任意一行的第一个和最后一个都是1
		for(int i=0;i<arr.length;i++){
			arr[i][0] = 1;//给任何一行的第一列
			arr[i][i] = 1;//给任何一行的最后一列
		}
		//从第三行开始,每一个数据都是它上一行前一列和
		//它上一行的本列数据之和
		//前两行的值都已经确定了,2表示从第三行开始
		for(int i=2;i<arr.length;i++){
			//j=1,因为每一行的第一行已经赋值过1了。
			for(int j=1;j<i;j++){
				arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
			}
		}
		
		for(int j=0;j<arr.length;j++){
			for(int i=0;i<=j;i++){
				System.out.print(arr[j][i]+"\t");
			}			
			System.out.println();
		}
		
		//调用方法遍历
		//printTwoArray(arr);
	}
	
	public static void printTwoArray(int[][] arr){//地址值
		for(int j=0;j<arr.length;j++){
			for(int i=0;i<arr[j].length;i++){
				System.out.print(arr[j][i]+"\t");
			}			
			System.out.println();
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

4,java中的参数传递问题

  • 基本类型:形式参数的改变对实际参数没有影响
  • 引用类型:形式参数的改变直接影响实际参数
/*
java中的参数传递问题
*/
class Demo10{
	public static void main(String[] args){
		int a = 5;
		int b = 10;
		System.out.print("a="+a+",b="+b);
		change(a,b);
		System.out.print("a="+a+",b="+b);
		
		int[] arr = {1,2,3,4,5};
		System.out.print(arr[3]);//4
		change(arr);
		System.out.print(arr[3]);//8
	}
	
	public static void change(int[] arr){
		for(int i=0;i<arr.length;i++){
			if(arr[i]%2==0){
				arr[i] *= 2;
			}
		}
		System.out.print(arr[3]);//8
	}
	
	public static void change(int a,int b){//a=5,b=10
		a = b;//a=10;
		b = a+b;//b=20;
		System.out.print("a="+a+",b="+b);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 练习:某个公司采用电话传递信息,为了保证安全,在传递的过程中
    需要加密。数据是一个小于8位的整数。
    加密规则:
    先把数据倒序,然后给每个数字都加上5,再用除以10的余数代替该数字
    最后把第一位和最后以为数字交换位置。
    要求:任意给定一个小于8位的整数,把加密后的加过打印在控制台上。
    123456
    654321 109876 609871
    最后改写成方法,数据采用键盘输入
import java.util.Scanner;
class ShuZu{
	public static void main(String[] args){
		//键盘输入
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个小于八位的整数");
		//数据接收
		int n = sc.nextInt();
		int[] arr = new int[8];
		 
		//给数组元素赋初值 逆序
		for(int i = 0; i < 8; i++){
			arr[i] = n%10;
			n /= 10;
		}
		
		//调用加密方法
		jiaMi(arr);
	}
	
	//获取位数
		//定义数组位数,赋初值为8
	public static int getWei(int[] arr){
		int n = 8;
		for(int i = 7; i >= 0; i--){
			//从后往前看,有0则有效数据位数-1
			if(arr[i] == 0){
				n--;
			}
		}
		return n;
	}
		
	
	//加密方法
	public static void jiaMi(int[] arr){
		//获取位数
		//定义数组位数,赋初值为8
		int n = 8;
		for(int i = 7; i >= 0; i--){
			//从后往前看,有0则有效数据位数-1
			if(arr[i] == 0){
				n--;
			}
		}
		System.out.println("有效数据位数"+n);
		//加密操作
		for(int i = 0; i < n; i++){
			arr[i] = (arr[i]%10+5)%10;
		}
		//printArray(arr);
		//交换首尾
		int temp = arr[0];
		arr[0] = arr[n-1];
		arr[n-1] = temp;
		
		//遍历数组
		System.out.print("[");
		for(int i = 0; i < n; i++){
			if(i == n - 1){
				System.out.print(arr[i]+"]");
			}else{
				System.out.print(arr[i]+",");
			}
		}
		System.out.println();
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/319688
推荐阅读
相关标签
  

闽ICP备14008679号