今日学习Java数组过程中,碰到如何给一个二维数组赋值和找到该行该列中最大元素的问题。向大家分享一些我的学习经验。
数组的初始化:
数组的初始化有两种方法:静态初始化和动态初始化。
静态初始化:
格式一:
直接为每个元素赋初始值,直接分配内存空间,一般为数组元素较少的情况下使用。形式为:
数据类型 数组名[]={值1,值2,值3};
例子:初始化一个长度为3的整形数组
int a[]={1,2,3};
格式二:
通过scanner系统类进行键入初始化
可以通过Scanner类实现从控制台输入来初始化一维数组。下面是一个Java示例代码:
import java.util.Scanner;
public class InitializeArrayWithScanner {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入整数数组元素个数:");
int length = scanner.nextInt();//通过键入数组长度
int[] arr = new int[length];//新建一个长度为键入数组长度的数组对象
System.out.println("请逐个输入数组元素:");
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt();
}
System.out.print("您输入的数组为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
对于静态初始化而言,需在声明一个数组时就赋值,且在元素较少时才使用。显得极为不便
动态初始化
动态初始化需要使用new操作来分配内存空间,既可以在声明时 初始化,又可以在声明后初始化。
格式一:
使用new运算符指定数组大小后进行初始化。
类型 数组名[];
数组名=new 类型[数组长度]
例如:
int c[]=new int[3];
int c[];
c=new int[3];
例如:
int []a=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
格式二:
使用new运算符指定数组元素的值
type[]array=new type[]{值1,值2,值3};
数组的随机赋值
对于数组的随机赋值需要Random类,需要该类才能产生随机数。
import java.util.Random;
对二维数组进行随机赋值
int data[][]=new int[5][6];//通过new运算符构造一个五行六列的二维数组
Random random=new Random();//创建一个新的random对象
for(int i=0;i<data.length;i++) {//使用for循环给二维数组随机赋值
for(int j=0;j<data[i].length;j++) {
data[i][j]=random.nextInt(100);//产生100以内的随机数
}
}
找到该行该列的最大元素
for (int x = 0; x < data.length; x++) { // 遍历每一行数组的元素
int maxInRow = data[x][0];
int maxColIndex = 0;
for (int j = 0; j < data[x].length; j++) { // 找到该行最大的元素和其在列中的位置
if (data[x][j] > maxInRow) {
maxInRow = data[x][j];
maxColIndex = j;
}
}
// 判断该元素是否也是其所在列的最大值
boolean isMaxInCol = true;
for (int k = 0; k < data.length; k++) {
if (data[k][maxColIndex] > maxInRow) {
isMaxInCol = false;
break;
}
}
// 如果满足条件,则输出该元素及其位置
if (isMaxInCol) {
System.out.printf("元素%d在第%d行第%d列是最大的\n", maxInRow, x + 1, maxColIndex + 1);
}
}
以上就是本章内容