●
●
●
●
《最受欢迎的精准提升平台》
/**
*@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
新浪微博:清哥好课堂
联系客服