黑马程序员技术交流社区

标题: 关于数组的一个简单问题(已解决) [打印本页]

作者: 韩新凯    时间: 2012-4-15 20:46
标题: 关于数组的一个简单问题(已解决)
本帖最后由 韩新凯 于 2012-4-18 15:18 编辑

给定数组获取数组最大值,public class ArrayTest {
        public static void main(String[] args) {
                ArrayTest at = new ArrayTest();
                int[] arr = {1,2,4,6,3,2};
                int max = at.getMaxValue(arr);
                System.out.println("max = "+max);
        }

        public static int getMaxValue(int[] arr){
                int maxValue = arr[0];
                for(int i=0;i<arr.length;i++){
                        if(maxValue < arr){
                                maxValue = arr;
                        }
                }
                return maxValue;
        }
}
如果给定的数组int[] arr = {};会出错,为什么?

作者: 张卯    时间: 2012-4-15 20:53
本帖最后由 张卯 于 2012-4-15 20:57 编辑

...数组为空,当然出错了,你让虚拟机干什么?
arr只是一个引用,你没有new出对象,就没有内存空间,就不可能赋值,这样能明白吗?
作者: 高铭    时间: 2012-4-15 20:56
空的数组....怎么运行啊
作者: chenwei    时间: 2012-4-15 20:58
数组为空,就没有索引
int maxValue = arr[0];就会数组索引越界异常

作者: 曾虓    时间: 2012-4-15 21:15
代码分析:
如果改成int[] arr = {};话,意味着声明了一个空的数组。
int maxValue = arr[0];就会报数组索引越界(Attempt to access illegal array index: 0)

所以一般获取数组单一数据的时候,最好做一个判断:
            if (arr.length>0) {                        
                }
对于你的代码还有几点修改的问题:
第一getMaxValue这个方法是ArrayTest类内部的静态方法,所以完全没有必要再实例化一次ArrayTest
直接用getMaxValue即可。
第二由于是内部的私有静态方法,所以请把getMaxValue设为private

修改后代码如下:
public class ArrayTest {

    public static void main(String[] args) {
        int[] arr = {};
        int max = getMaxValue(arr);
        System.out.println("max = " + max);
    }

    private static int getMaxValue(int[] arr) {
        int maxValue = 0;
        if (arr.length > 0) {
            maxValue = arr[0];
            for (int i = 0; i < arr.length; i++) {
                if (maxValue < arr) {
                    maxValue = arr;
                }
            }
        }
        return maxValue;
    }

}


希望对你有所帮助。{:soso_e113:}

作者: 张小庆    时间: 2012-4-15 21:50
数组里边都没有值,怎么比较输出最大值啊
作者: 韩新凯    时间: 2012-4-15 23:15
懂了,谢谢。




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