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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

杨敏

注册黑马

  • 黑马币:0

  • 帖子:6

  • 精华:0

© 杨敏 注册黑马   /  2012-7-10 00:29  /  1285 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨敏 于 2012-7-10 07:43 编辑

在取数组中最大值的练习时,将函数的返回值类型写成int和void都可以得出相同结果
class Getmax
{
        public static void main(String[] args)
        {
                int[] arr ={5,34,54,23,65,3,4,87,4,21,7};
                getmax(arr);
        }
        public static int getmax(int[] arr)  //public static void getmax(int[] arr)同样可以。
        {
                int max = 0;
                for(int x=0;x<arr.length;x++)
                {
                        if(arr[x] < arr[max])
                        max =x;        
                }
                System.out.println("max="+arr[max]);
        }
}
按我的理解,运行函数后直接打印结果,返回值类型应该是void,为什么int也可以,这种情况怎么解释?

5 个回复

倒序浏览
你这个程序是不能通过编译的,因为getmax ()方法中的返回值类型是int
而你在程序中并没有写return语句,所以是编译失败的。
如果把返回值类型改成void的,即换成你注释中的代码,那么程序就可以
编译并运行成功了。
方法需不要需要返回值,是根据你方法的意义来决定,而已一般我们不建议直接
在方法中打印输出,而应该把数据返回给调用者,让调用者自己去处理
,因为调用
者有可能不是想打印,而是想用来其他操作。




评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
可以很肯定的确定,如果返回值类型是int,那你的方法中最后必须以return结束,并且return后跟的是一个int型数据。
楼主在自己编译试试吧,我特意为你编译+截图,多动手,很多问题自己都能解决。

回复 使用道具 举报
这个编译有问题的。你调用这个方法,是为了什么?是通过这个方法计算值还是通过这个方法打印,排序什么的,再根据这个来确定返回值类型。
回复 使用道具 举报
可能是换成int时忘记保存源文件,导致两次编译都能通过,且结果相同,失误!感谢热心的黑马人!

点评

楼主要养成经常保存的好习惯,就不会出现这样的问题了。  发表于 2012-7-10 13:30
回复 使用道具 举报
建议你在编程时养成随时保存的习惯。以防断电什么的,导致代码都白写了。

关于定义函数返回值的问题。定义什么类型的,就一定要有一个相应的同一类型的值返回来。int就是int。

void类型,一定不能有返回值。否则编译出错。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马