/** *@Title: ${filename} *@Package: ${package_name} *@Description: ${todo} *二维数组 一,为什么需要二维数组? 一维数组是可以用来存储相同类型的大量数据 需求:存储3个学生java c c++ 等三门课程的成绩 java c c++ jsp mysql 80 70 80 90 90 95 95 80 85 二,二维数组一般的定义格式 数据类型[][] 数组名 = new 数据类型[行数][列数]; 指定行数和列数 赋值 数组名[行下标][列下标] = 值; 行下标起始值0 结束值行数-1 列下标起始值0 结束值列数-1 * *@author: 源代码资料尽在"清哥好课堂"公众号:qghktit *@date: ${date}${time} *@version: 1.0 */ import java.util.Scanner; public class TwoArrary { public static void main(String[] args) { //定义不同行中的列数 //举例 /* 杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 */ final int N = 10; int[][] arr = new int[N][];
//赋值 //arr[0][0] = 1; //java.lang.NullPointerException //没有空间。赋值 //第0行申请空间 //arr[0] ;代表的是二维数组中的第一行,是一个一维数组 //也就是说arr[0]是一维数组的数组名 //就必须给数组开辟空间 // arr[0] = new int[1]; //给二维数组的第一行,申请一个空间 // arr[0][0] = 1;
/* i=0, 申请1个 i=1, 申请2个 i=2, 申请3个 */ for (int i=0; i<N; i++) //给每一行申请不同的空间数 { arr[i] = new int[i+1]; }
//求杨辉三角 for (int i=0; i<N; i++) { for (int j=0; j<=i; j++) { if (j==0 || i==j) //在0列上的,和对角线上的,都为1 { arr[i][j] = 1; } else if (i>j) { arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; } } }
//输出 //输出 for (int row=0; row<arr.length; row++) //外层循环打印行数 { for (int col=0; col<arr[row].length; col++) //内层循环打印列 { System.out.print(arr[row][col]+"\t"); } System.out.println(""); }
} public static void main5(String[] args) { //二维数组的非常规定义法 //行数是固定的,列数的值各不相同 //要开辟出 /* 一开始知道初始值 0行,2列 1行,3列 2行,2列 3行,3列 */ int[][] arr = {{1,2},{4,5,6},{7,8},{10,11,12}}; //arr[0][2] error //一个二维数组,由多个同类型的一维数组组成
System.out.println("整个数组的长度"+arr.length); System.out.println("第0行的长度:"+arr[0].length); System.out.println("第1行的长度:"+arr[1].length); System.out.println("第2行的长度:"+arr[2].length); System.out.println("第3行的长度:"+arr[3].length); //输出 for (int row=0; row<arr.length; row++) //外层循环打印行数 { for (int col=0; col<arr[row].length; col++) //内层循环打印列 { System.out.print(arr[row][col]+"\t"); } System.out.println(""); }
/* 杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 */ } public static void main4(String[] args) { //正常情况对数组的定义 //规规矩矩 //4*3 //int[][] arr = {{1,2},{4,5,6},{7,8,9},{10,11,12}}; /* 杨辉三角 1 0 0 0 0 1 1 0 0 0 1 2 1 0 0 1 3 3 1 0 0 1 4 6 4 1 0 1 5 10 10 5 1 */ final int N = 5; int[][] arr = new int[N][N]; //有默认值为0 for (int i=0; i<N; i++) { for (int j=0; j<=i; j++) { if (j==0 || i==j) //在0列上的,和对角线上的,都为1 { arr[i][j] = 1; } else if (i>j) { arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; } // { // if (i>j) // { // arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; // } // } } }
//输出 for (int row=0; row<arr.length; row++) { for (int col=0; col<arr[row].length; col++) { System.out.print(arr[row][col]+"\t"); } System.out.println(""); } } public static void main3(String[] args) { //从键盘接收3行4列中的最大值 int[][] arr = new int[3][4]; int index = 0; for (int row=0; row<arr.length; row++) { for (int col=0; col<arr[row].length; col++) { index++; System.out.println("请输入第"+index+"个元素:"); Scanner sc = new Scanner(System.in); arr[row][col] = sc.nextInt();
//求最大值 } }
//求最大值 //单独最大值,没有在输入元素时找最大值 int max = arr[0][0]; for (int row=0; row<arr.length; row++) { for (int col=0; col<arr[row].length; col++) { if (max < arr[row][col]) { max = arr[row][col]; } } } System.out.println("最大值为:"+max);
//输出 for (int row=0; row<arr.length; row++) { for (int col=0; col<arr[row].length; col++) { System.out.print(arr[row][col]+","); } System.out.println(""); } } public static void main2(String[] args) { //二维数组的定义方式 //对于一维数组 int[] arr1 = new int[]{1,2,3,4,5}; //对于二维数组,一开始有初值的定义方式 //一个二维数组,由多个一维数组组成 //int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
//int[] arr1 = {1,2,3,4,5} //可以简化为 int[][] arr = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
//输出 //手动去约束循环条件执行的次数 //length System.out.println("二维数组的长度:"+arr.length); System.out.println("其中的一维数组长度:"+arr[0].length+","+arr[1].length+","+arr[2].length+","+arr[3].length); for (int row=0; row<arr.length; row++) { for (int col=0; col<arr[row].length; col++) { System.out.print(arr[row][col]+","); } System.out.println(""); }
} public static void main1(String[] args) { //存储3个学生的3门成绩 int[][] scoreArr = new int[3][3]; //开辟空间,3*3=9个空间 //二维数组,由多个一维数组组成,堆区申请空间,int a;栈区 //赋值 //存第一个学生的三门成绩 scoreArr[0][0] = 80; scoreArr[0][1] = 70; scoreArr[0][2] = 80; //存第二个学生的三门成绩 scoreArr[1][0] = 90; scoreArr[1][1] = 90; scoreArr[1][2] = 95; //存第三个学生的三门成绩 scoreArr[2][0] = 95; scoreArr[2][1] = 80; scoreArr[2][2] = 85;
//输出 //打印一维数组,需要一个循环 //打印0行的值 //scoreArr[0][col] // for (int col=0; col<3; col++) // { // System.out.print(scoreArr[0][col]+","); // } // System.out.println(""); // //scoreArr[1][col] // for (int col=0; col<3; col++) // { // System.out.print(scoreArr[1][col]+","); // } // System.out.println(""); // //scoreArr[2][col] // for (int col=0; col<3; col++) // { // System.out.print(scoreArr[2][col]+","); // } // System.out.println(""); for (int row=0; row<3; row++) { for (int col=0; col<3; col++) { System.out.print(scoreArr[row][col]+","); } System.out.println(""); } } }

清哥好课堂公众号 微信号 : qghktit 新浪微博:清哥好课堂
|