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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 妖精斩月 中级黑马   /  2014-7-5 08:23  /  1424 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class ArrayDemo
{
        public  static int getMax(int[] arr)
        {
                int max = 0;
               
                for (int x = 1;x<arr.length ;x++ )
                {   
                        if(arr[x]>arr[max])
                                max = x;
                }
                        reture arr[max];
        }

public static void main(String[] args)
        {               
                int[] arr = {5,1,6,4,2,8,9};

                int max = getMax(arr);

                System.out.println("arr="+arr);
        }
}
,为什么运行结果老是数组地址?arr=[I@1fb8ee3?

U0]T7$7$E4NCFDM~0}9]B_M.jpg (77.74 KB, 下载次数: 6)

U0]T7$7$E4NCFDM~0}9]B_M.jpg

17 个回复

倒序浏览
你是想求最大值,输出的应该是max吧,arr是数组首指针(地址),并且数组的toString是输出地址值
回复 使用道具 举报
数组是需要遍历的 你直接输出是地址
回复 使用道具 举报
你主函数中,调用了找出最大数的方法后,输出语句是:
        System.out.println("arr="+arr);
要知道,值里面的arr会自动调用toString()方法,就会出现你的这个问题:

修改方法:
        1、如果你想要得到最大的那个数:
        改为: System.out.println("arr="+max);
        2、如果你想要输出这个数组:
          遍历吧!
回复 使用道具 举报
楼上正解
回复 使用道具 举报
System.out.println("arr="+arr);这里的arr是地址,应该改成max
回复 使用道具 举报
看函数,感觉楼主的目的应该是输出数组中的最大值,所以:
System.out.println("arr="+arr);
改成:
System.out.println("arr="+max);
假如还需要输出max在数组中的索引,可以在函数中多返回一个max,max与arr[max]放到result数组里面,输出的时候可以result[0],result[1]的输出。
回复 使用道具 举报
就是你自己做了个获取最大值的方法,然后没使用,你直接打印了arr的地址值,逻辑有点混乱不知道你这段程序想实现什么功能,如果想打印arr数组那就遍历,要不就直接获取最大值。
回复 使用道具 举报
System.out.println("arr="+arr);
你new一个数组,在堆内存中开辟空间,把地址传给栈内存的arr,等于说用地址引用这个数组,数组是引用数据类型,
你等于把arr的地址打印出来了,你写("max="+max)
回复 使用道具 举报
你的return打成reture了...而且 System.out.println("arr="+max);应该是这样才能输出最大值,你若想输出数组的值的话可以这样:
System.out.println(Arrays.toString(arr));
回复 使用道具 举报
public  class Demo {
        public static int getMax(int[] arr) {
                int max = 0;

                for (int x = 1; x < arr.length; x++) {
                        if (arr[x] > arr[max])
                                max = x;
                }
                return arr[max];
        }

        public static void main(String[] args) {
                int[] arr = { 5, 1, 6, 4, 2, 8, 9 };

                int max = getMax(arr);

                System.out.println("arr=" + max);
        }
}
亲 你return都写错了,,,
回复 使用道具 举报
最后,你定义了一个为arr的数组,再打印arr,数组不遍历的话,肯定打印的是数组地址
回复 使用道具 举报
马到成功2014 发表于 2014-7-5 08:30
数组是需要遍历的 你直接输出是地址

需要遍历啊,谢谢
回复 使用道具 举报
blue_sky 发表于 2014-7-5 08:31
你主函数中,调用了找出最大数的方法后,输出语句是:
        System.out.println("arr="+arr);
要知道, ...

知道了,感谢解答。
回复 使用道具 举报
OCTSJimmy 发表于 2014-7-5 09:02
看函数,感觉楼主的目的应该是输出数组中的最大值,所以:
System.out.println("arr="+arr);
改成:

现在知道了,呵呵,非常感谢解答
回复 使用道具 举报
zhohao 发表于 2014-7-5 09:14
就是你自己做了个获取最大值的方法,然后没使用,你直接打印了arr的地址值,逻辑有点混乱不知道你这段程序 ...

打算输出最大值,原来是那里错了,感谢你的帮助
回复 使用道具 举报
醉、倾鯎 发表于 2014-7-5 16:05
public  class Demo {
        public static int getMax(int[] arr) {
                int max = 0;

我只求最大值,很感谢您的详细解答
回复 使用道具 举报
输出不对
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马