一、一维数组和二维数组
这是一个一维数组, 里面的每一个元素,都是一个基本类型int
int a[] =new int[]{1,2,3,4,5}; |
这是一个二维数组,里面的每一个元素,都是一个一维数组
所以二维数组又叫数组的数组
int b[][] = new int[][]{ {1,2,3}, {4,5,6}, {7,8,9} }; |
二、初始化二维数组
public class HelloWorld { public static void main(String[] args) { //初始化二维数组, int[][] a = new int[2][3]; //有两个一维数组,每个一维数组的长度是3 a[1][2] = 5; //可以直接访问一维数组,因为已经分配了空间
//只分配了二维数组 int[][] b = new int[2][]; //有两个一维数组,每个一维数组的长度暂未分配 b[0] =new int[3]; //必须事先分配长度,才可以访问 b[0][2] = 5;
//指定内容的同时,分配空间,没有指定有几个一维数组,也没有指定数组的长度 int[][] c = new int[][]{ {1,2,4}, {4,5}, {6,7,8,9} }; } } |
三、练习--二维数组
题目:
定义一个5X5的二维数组。 然后使用随机数填充该二维数组。
找出这个二维数组里,最大的那个值,并打印出其二维坐标
0-100的 随机整数的获取办法有多种,下面是参考办法之一:
(int) (Math.random() * 100) |
Math.random() 会得到一个0-1之间的随机浮点数,然后乘以100,并强转为整型即可。
实现效果:
官方示例代码:
public class HelloWorld { public static void main(String[] args) { int a[][] = new int[5][5]; // 初始化这个数组 for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { a[i][j] = (int) (Math.random() * 100); } } // 打印这个数组的内容: for (int[] row : a) { for (int each : row) { System.out.print(each + " "); } System.out.println(); }
int max = -1;// 最大值 // 最大值的坐标 int target_i = -1; int target_j = -1; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { if (a[i][j] > max) { max = a[i][j]; target_i = i; target_j = j; } } } System.out.println("找出来最大的是:" + max); System.out.println("其坐标是[" + target_i + "][" + target_j + "]"); } } |
个人整理代码:
public class Array06 { public static void main(String[] args) { TwoDimensionalArrayExercise(); }
public static void InitializeATwoDimensionalArray(){ // 初始化二维数组 int[][] a = new int[2][3];//意思是创建了一个有两个一维数组的二维数组,每个一维数组的长度是3
a[1][2] = 5; // 可以直接访问一维数组,因为已经分配了空间
//只分配了二维数组 int [][] b = new int[2][]; // 有两个一维数组,每个一维数组的长度暂未分配 b[0] = new int[3]; //必须事先对一维数组进行分配长度,才可以访问
b[0][2] = 5;
// 指定内容的同时,分配空间 int [][] c = new int[][]{
}; }
public static void TwoDimensionalArrayExercise(){ int [][] a = new int[5][5]; // 初始化这个数组 for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length; j++) { a[i][j] = (int)(Math.random()*100); //Math.random() 会得到一个0-1之间的随机浮点数 } }
// 打印这个数组的元素值 for (int[] twoEach : a) { for (int oneEach : twoEach) { System.out.println(oneEach); } System.out.println("--------------------------------------------"); }
int max = -1; //假定,初始的需要寻找的最大值为-1 (给这个不可能出现的值,方便后面寻找变换) // 最大值的坐标 int target_i = -1; int target_j = -1;
for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length; j++) { if (a[i][j] > max) { max = a[i][j]; target_i = i; target_j = j; } } }
System.out.println("找出来的二维数组最大值是:" + max); System.out.println("该最大值的坐标是:[" + target_i + "," + target_j +"]"); } } |