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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩新凯 中级黑马   /  2012-4-15 20:46  /  2972 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韩新凯 于 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 = {};会出错,为什么?

6 个回复

倒序浏览
本帖最后由 张卯 于 2012-4-15 20:57 编辑

...数组为空,当然出错了,你让虚拟机干什么?
arr只是一个引用,你没有new出对象,就没有内存空间,就不可能赋值,这样能明白吗?

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
空的数组....怎么运行啊
回复 使用道具 举报
数组为空,就没有索引
int maxValue = arr[0];就会数组索引越界异常
回复 使用道具 举报
代码分析:
如果改成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:}

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
数组里边都没有值,怎么比较输出最大值啊
回复 使用道具 举报
懂了,谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马