黑马程序员技术交流社区

标题: 为什么for循环的i(j)要小于arr.length-1而不是arr.length? [打印本页]

作者: 不羁的风1230    时间: 2014-5-11 21:57
标题: 为什么for循环的i(j)要小于arr.length-1而不是arr.length?
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]);
        }
}

作者: 谢振宣    时间: 2014-5-11 22:33
arr.length表示数组arr的长度,而数组的角标是从0开始的,arr.length-1就是该数组的最后一个角标。
对数组的遍历不可以超出该数组的范围,否则会抛出数组角标越界异常。
作者: 姜蕾蕾    时间: 2014-5-12 00:20
数组下标从0开始的啊,基础的不能再基础了,多学学视频吧……
作者: 李小新H    时间: 2014-5-12 07:46
因为数组的角标是从零开始的!所以要减一!
作者: 最后的希冀    时间: 2014-5-12 08:04
额,同学,你的代码有问题,当遍历的上限为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. }
复制代码

作者: yemenglin    时间: 2014-5-12 09:31
基础很重要
作者: 黑马—张帅    时间: 2014-5-12 10:18
数组角标从0开始啊,减一就是最后一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2