JAVA系列:二维数组、数组清零(清空元素)的几种方法(7)

1. 定义一个二维数组,找出最大值,打印最大值所有坐标

定义二维数组:

int[][] a=new int[5][5];

二维数组的行数和列数:

行数:array.length
列数:array[0].length

示例:

public class DoubleArray{
    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[0].length;j++){
                a[i][j]=(int)(Math.random()*10);
            }
        }
        int maxi=0;
        int maxj=0;
        int count=0;
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[0].length;j++){
                if(count%5!=0){
                    System.out.print(a[i][j]+" ");
                    count++;
                }
                else {
                    System.out.print("\n");
                    System.out.print(a[i][j]+" ");
                    count++;
                }
                if(a[maxi][maxj]<a[i][j]){
                    maxi=i;
                    maxj=j;
                }
            }
        }

        System.out.println("\nThe maximun number of the array: "+a[maxi][maxj]+"\n其坐标为:("+maxi+","+maxj+")");
    }

}

但这种实现方式还是有点问题,就是只能打印出一个最大值的坐标,我们可以定义一个数组,来保存最大值坐标的数组,具体的方式是:

public class LargestNumberIndex {
	public static void main(String[] args) {
		//init an array.
        int[][] a=new int[][] {{1,2,3},{3,2,1}};

        
        // get the largest number. countMax: 最大值的个数
      
        int maxi = 0, maxj = 0, countMax = 1;
        
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[0].length;j++){
            	if(a[maxi][maxj] < a[i][j]){
                    maxi = i;
                    maxj = j;
                    countMax = 1;
                }
            	else if(a[maxi][maxj] == a[i][j]) {
            		countMax += 1;
            	}
            }
        }

        // 记录所有最大值的下标
        int[] maxNumi=new int[countMax];
        int[] maxNumj=new int[countMax];
        
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[0].length;j++){
            	if(a[maxi][maxj] == a[i][j]){
                    maxi = i;
                    maxj = j;
                    countMax -= 1;

                    maxNumi[countMax] = i;
                    maxNumj[countMax] = j;
                }
            }
        }
        // 输出结果
        for(int i=0;i<maxNumi.length;i++){
        	//System.out.println(a[maxNumi[i]][maxNumj[i]]);
        	System.out.println("\nThe maximun number of the array: "+
        	a[maxNumi[i]][maxNumj[i]] + "\n其坐标为:(" + maxNumi[i] + "," + maxNumj[i] + ")");
        }
	}
}

效果:

The maximun number of the array: 3
其坐标为:(1,0)

The maximun number of the array: 3
其坐标为:(0,2)

2.二维数组清零

方法一:遍历赋值0

//全部清零
for(int j = 0;j<arg.length-1;j++){
     arg[j]=0;
}

方法二:指向空指针

//空指针
arg = null;

错误方法: 定义clear 方法

public void Clear_array(arr)
{
    arr = null;
}

论坛上说,这种方法只有针对有指针的语言才有用,否则只是清空形参,没有用。


参考:

  1. java中怎么清空数组中的元素 黑马论坛
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rosefunR

你的赞赏是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值