A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Day06_06 {
        public static void main(String[] args) {
                int arr[][]={{1,2,3,4},{2,3,4,5},{4,5,6,7}};
                arr(arr);
        }
        /*
        求二维数组的最大值;
          无需返回值;
          定义一个二维数组;
        */
        public static void arr(int[][] arr){
                int i=0;
                int j=0;
        for (i=0;i<arr.length-1;i++ ) {
        for ( j=0 ;j<arr[i].length-1 ;j++) {
                        if(arr[0][0]<arr[i][j])
                        {
                                arr[0][0]=arr[i][j];
                        }
                }
        }System.out.println("i="+i+" j="+j+" max="+arr[i][j]);
        }
}

6 个回复

倒序浏览
arr.length表示数组arr的长度,而数组的角标是从0开始的,arr.length-1就是该数组的最后一个角标。
对数组的遍历不可以超出该数组的范围,否则会抛出数组角标越界异常。
回复 使用道具 举报
数组下标从0开始的啊,基础的不能再基础了,多学学视频吧……
回复 使用道具 举报
因为数组的角标是从零开始的!所以要减一!
回复 使用道具 举报
额,同学,你的代码有问题,当遍历的上限为length-1时,应该用"<=",而如果要用"<"的时候,则直接写arr.length即可。参考代码
  1. public class ArrayDemo {
  2.         public static void main(String[] args) {
  3.                 int [][] arr = {{1,2,3},{4,5,6},{7,8,9}};
  4.                 int max = getMax(arr);
  5.                 System.out.println(max);
  6.         }

  7.         private static int  getMax(int[][] arr) {
  8.                 int max =arr[0][0];
  9.                 for(int i = 0 ; i<arr.length ;i++) {
  10.                         for(int j = 0 ; j<arr[i].length ; j++) {
  11.                                 if(arr[i][j] > max) {
  12.                                         max = arr[i][j];
  13.                                 }
  14.                         }
  15.                 }
  16.                 return max;
  17.         }
  18. }
复制代码
回复 使用道具 举报
基础很重要
回复 使用道具 举报
数组角标从0开始啊,减一就是最后一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马