java_二维数组

本文深入探讨了Java中的二维数组,包括其定义、初始化和遍历方法。通过实例展示了动态创建二维数组的过程,并给出了计算二维数组元素之和的代码。此外,还提到了二维数组在内存中的存储方式,以及杨辉三角形的生成算法。强调了二维数组每个一维数组长度可以不等的特性,并提供了不同初始化方式的示例。
摘要由CSDN通过智能技术生成

TwoDimensionalArray(二维数组)、

二维数组就像一个矩阵啦!输入方式的话就像{{}};这样的!中间用,号间隔。

或者这样理解:一维数组的每个元素又是一个数组。

import java.util.Scanner;
public class Change{
	public static void main(String[] args){
	Scanner myScanner = new Scanner(System.in);
	int[][] arr = {{0,0,0,0,0},{1,1,1,1,1},{3,3,3,3,3},{5,5,5,5,5},{4,5,6,7,8}};
	//输出二维图形,遍历二维数组。
	for (int i = 0;i < arr.length ;i++ ) {
		for (int j = 0;j < arr[i].length;j++ ) {
			System.out.print(arr[i][j] + " ");
		}
			System.out.println(" ");

	}

    }
}

遍历二维数组一定要会啊。

1、二维数组中每个一维数组中的个数可以不一样哦。也就是说矩阵中可以没有值,不是0。

 2、怎么定义     int[][] = {{}};

3、二维数组的元素个数:依然是arr.length,这其实是一位数组啦。

4、每一个又是一位数组,还需要再次遍历才能将所有的值表示出来。

5、访问第(i + 1)个一位数组的第(j + 1)个值------------------> arr[i][j] -----减一就好!

万丈高楼平地起,辉煌只能靠自己!


int[] [] name = new int[2][3];

二维数组在内存中是怎么存在的呢?

最开始指向的其实是地址,他的地址再次指向数据。先地址后数据。 了解到他的地址存储方式,就知道 ,二维数组其实跟矩阵不一样,矩阵中必须有数值,而二维数组里面具体的一维数组就可以长度不等啦。(瞎想)


怎么使用和一维数组大体类似;

(1)int[][] name = new int[1][2];

(2)int[][] name;

        name = new int[2][3];

(3)int[][]  name = {{},{}};//静态初始化。

列数不确定的元素:就是上面的瞎想。

直接赋值的机制。

import java.util.Scanner;
public class Change{
	public static void main(String[] args){
	Scanner myScanner = new Scanner(System.in);
	// 动态创建二维数组就是
	// i = 0: 1
	// i = 1: 2 2 
	// i = 2: 3 3 3
	int[][] arr = new int[3][];//也就是最开始没开空间。列数不知道。
    //创建二维数组,有三个一维数组,但是每个一维数组没有开辟空间。
	for (int i = 0;i < arr.length ;i++ ) {
		arr[i] = new int[i + 1];//给一维数组开辟空间。想象地址的指向也就明晰了。
		// 遍历每个一维数组,并且赋值,赋值的时候要注意点。每个一维数组是独立的个体。
		for (int j = 0;j < arr[i].length ;j++ ) {
			arr[i][j] = i + 1;
		}
	}
		for (int i = 0;i < arr.length ;i++ ) {
			for (int j = 0;j < arr[i].length ;j ++ ) {
				System.out.print(arr[i][j] + " ");
			}
				System.out.println("");

		}


    }
}

小练习:遍历二维数组:

import java.util.Scanner;
public class Change{
	public static void main(String[] args){
	Scanner myScanner = new Scanner(System.in);
	int[][] arr = {{4,6},{1,4,5,7},{-2}};
	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);

    }
}

              杨辉三角形:

import java.util.Scanner;
public class Change{
	public static void main(String[] args){
	Scanner myScanner = new Scanner(System.in);
	int[][] arr = new int[10][];
	for (int i = 0;i < arr.length ;i++ ) {
		// 开辟空间吧
		arr[i] = new int[i + 1];
		// 找规律赋值
		
			for (int j = 0;j < arr[i].length ;j++ ) {
				if (j == 0 || j == arr[i].length - 1 ) {
					arr[i][j] = 1;
				}else{
					arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
				}

			
			}		
	}
		for (int i = 0;i < arr.length ;i++ ) {
			for (int j = 0;j < arr[i].length ;j ++ ) {
				System.out.print(arr[i][j] + " ");
				
			}
				System.out.println(" ");
		}
    }
}

那个第一行和最后一行不就是上次打印空心三角形的例子吗,这里不过是变成了第一个和对最一个元素。最后一个其实只到了arr【i】.length - 1。

二维数组还可以这样表示int[] name[];知道就行了

int[] x,y[];   --------->这里面x是一位数组,y是二维数组。

抓住本质啊。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值