常见二维数组操作

/**
 * 1)(使用输入值初始化数组)下面的循环使用用户输入值初始化数组:
 * 
 */
public static void inputIntialize() {
    int[][] matrix = new int[3][3];
    Scanner input = new Scanner(System.in);
    System.out.print("1)使用输入值初始化数组:");
    for (int row = 0; row < matrix.length; row++) {
        for (int column = 0; column < matrix[row].length; column++) {
            matrix[row][column] = input.nextInt();
        }
    }
    input.close();
    System.out.println(Arrays.deepToString(matrix));
}
/**
 * 2)(使用随机值初始化数组)下面的循环使用0 到99 之间的随机值初始化数组:
 */
public static void randomIntialize() {
    int[][] matrix = new int[3][3];
    System.out.print("2)使用随机数初始化数组:");
    for (int row = 0; row < matrix.length; row++) {
        for (int column = 0; column < matrix[row].length; column++) {
            matrix[row][column] = (int) (Math.random() * 100);
        }
    }
    System.out.println(Arrays.deepToString(matrix));
}
/**
 * 3)(打印数组)为打印一个二维数组,必须使用如下所示的循环打印数组中的每个元素:
 */
public static void printMatrix() {
    int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    System.out.println("3)打印二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }:");
    // 采用嵌套循环打印数组
    for (int row = 0; row < matrix.length; row++) {
        for (int column = 0; column < matrix[row].length; column++) {
            System.out.print(matrix[row][column] + " ");
        }
        System.out.println();
    }
    // 采用Arrays.deepToString(Object[] a)打印数组
    System.out.println(Arrays.deepToString(matrix));
}
/**
 * 4)(求所有元素的和)使用名为sum的变量存储和。将sum初始化为0。利用类似下面的循环,把数组中的每一个元素都加到sum上:
 */
public static void sumMatrix() {
    int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    int sum = 0;
    for (int row = 0; row < matrix.length; row++) {
        for (int colum = 0; colum < matrix[row].length; colum++) {
            sum += matrix[row][colum];
        }
    }
    System.out.println("4)求二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }所有元素的和:" + sum);
}
/**
 * 5)(对数组按列求和)对于每一列,使用名为sum的变量存储它的和。利用类似下面的循环,将该列中的每个元素加到sum上:
 */
public static void sumColumnMatrix() {
    int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    System.out.println("5)求二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }所有列元素的和:");
    for (int column = 0; column < matrix[0].length; column++) {
        int sum = 0;
        for (int row = 0; row < matrix.length; row++) {
            sum += matrix[row][column];
        }
        System.out.println(sum);
    }
}
/**
 * 6)(哪一行的和最大?)使用变量maxRow和indexOfMaxRow分别跟踪和的最大值以及该行的索引值。
 * <P>
 * 计算每一行的和,如果计算出的新行的和更大,就更新maxRow和indexOfMaxRow。
 */
public static void maxRow() {
    int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    System.out.println("6)计算二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }最大行的和以及该行的索引值:");
    int maxRow = 0;
    int indexOfMaxRow = 0;
    // 计算第一行的和
    for (int column = 0; column < matrix[0].length; column++) {
        maxRow += matrix[0][column];
    }
    System.out.println(maxRow);
    for (int row = 1; row < matrix.length; row++) {
        int totalOfThisMax = 0;
        for (int column = 0; column < matrix[row].length; column++) {
            totalOfThisMax += matrix[row][column];
        }
        System.out.println(totalOfThisMax);
        if (totalOfThisMax > maxRow) {
            maxRow = totalOfThisMax;
            indexOfMaxRow = row;
        }
    }
    System.out.println("最大行的和的索引值:" + indexOfMaxRow + ",最大行的和:" + maxRow);
}
/**
 * 7)(随意打乱)对每个元素matrix[i][j], 随机产生下标i1和j1,然后互换matrix[i][j]和matrix[i1][j1], 如下所示:
 */
public static void shuffleMatrix() {
    int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[i].length; j++) {
            int i1 = (int) (Math.random() * matrix.length);
            int j1 = (int) (Math.random() * matrix[i].length);
            // 用matrix[i1][j1]交换matrix[i][j]
            int temp = matrix[i][j];
            matrix[i][j] = matrix[i1][j1];
            matrix[i1][j1] = temp;
        }
    }
    System.out.println("7)随意打乱二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }:" + Arrays.deepToString(matrix));
}

转载于:https://www.cnblogs.com/echoing/p/8571876.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值