二维数组的相关操作,求主/斜对角,求外围数字和等

二维数组的相关操作

package arithmetic;

/**
 * 二维数组可以说 是一维数组的扩展
 *      声明及初始化类比于一维数组
 *      
 *      
 * @author sunRainAmazing
 *
 */
public class TwoArray {

    public static void main(String[] args) {
        int[][] arr={
                {1,2,3},
                {4,5,6},
                {7,8,9}
        };
        printArray2(arr);
        getArrayValue1(arr);
        getArrayValue3(arr);

    }




    /**
     * 依次遍历二维数组中的每个值
     * @param arr
     */
    public static void printArray2(int[][] arr){
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }





    /**
     * 求二维数组中的最值、和、平均值
     * @param arr
     */
    public static void getArrayValue1(int[][] arr){
        int min,max,sum=0;
        min=max=arr[0][0];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                if(min>arr[i][j]){
                    min=arr[i][j];
                }
                if(max"二维数组的min"+min);
        System.out.println("二维数组的max"+max);
        System.out.println("二维数组的sum"+sum);
    }





    /**
     * 求对角线之和
     * @param arr 二维数组
     * @param type 类型 
     *          type值为1求主对角线值
     *          type值为-1求斜对角线值
     */
    public static void getArrayValue2(int[][] arr,int type){
        //如果不是非正方矩阵,直接退出返回
        for (int i = 0; i < arr.length; i++) {
            if(arr.length!=arr[i].length){
                System.out.println("不是正方矩阵");
                return;
            }
        }
        //进行相关计算
        int sum=0;
        if(type==1){
            for (int i = 0; i < arr.length; i++) {
                sum+=arr[i][i];
            }
            System.out.println("主对角线和为:"+sum);
        }else if(type==-1){
            for (int i = 0; i < arr.length; i++) {
                sum+=arr[i][arr.length-1-i];
            }
            System.out.println("斜对角线和为:"+sum);
        }else{
            System.out.println("类型不匹配");
        }
    }





    /**
     * 求数组的外围值的和
     * @param arr
     */
    public static void getArrayValue3(int[][] arr){
        int sum=0;
        //求出第一行和最后一行的值的和
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i][0];
            sum+=arr[i][arr[arr.length-1].length-1];
        }
        //求出第一列和最后一列的值的和
        for (int j = 0; j < arr[arr.length-1].length; j++) {
            sum+=arr[0][j];
            sum+=arr[arr.length-1][j];
        }

        //减去重复加上的值 ---四个角的值
        sum-=(arr[0][0]+arr[0][arr[arr.length-1].length-1]
                +arr[arr.length-1][0]
                +arr[arr.length-1][arr[arr.length-1].length-1]);

        System.out.println("边框的值为"+sum);
    }


}

你可能感兴趣的:(Java基础算法案例)