黑马程序员技术交流社区

标题: 关于返回值的问题 [打印本页]

作者: 刘_浩    时间: 2012-3-26 09:34
标题: 关于返回值的问题
本帖最后由 liuhao411 于 2012-3-26 09:41 编辑

        public static int getmax(int[] a)
        {
                int max=a[0];
                for(int x=1;x<a.length;x++)
                {
                        if(a[x]>max)
                        {
                                max=a[x];
                        }
                }
                return max;
        }
        请问一下,return max位置问题。为什么只能放在public{}的直隶下,不能放在if中。放在if{}中的时候提示缺少返回值。放在public就正常了。对于返回值的位置有什么要求没有?
作者: 李涛涛    时间: 2012-3-26 09:38
for循环条件有错误。应该是x<a.length -1
作者: 庞子华    时间: 2012-3-26 09:39
怎么了啊?
作者: 肖发腾    时间: 2012-3-26 10:37
放在if{}中的时候提示缺少返回值。放在public就正常了。  
这个很好理解。public static int getmax(int[] a){}返回的是int型,所以函数中就一定要返回int型数据。但是如果把返回写到了if语句中,你想一下if是条件判断,满足条件就去执行if中语句,不满足就不执行,也即if中的return语句可能不被执行到!这样函数中就没有返回语句了。所以把return语句写到if语句中是错误的,会提示没有返回值。由此可以说明return语句必须放到一定会被执行的地方!就像异常处理中,finally{}一样。

作者: 马强    时间: 2012-3-26 10:41
循环结束,返回你要的值。。。。
作者: izwj    时间: 2012-3-26 10:50
public static int getmax(int[] a)

有返回值类型,最后一定要写上return
作者: 黑马老兵    时间: 2012-3-26 10:57
你放在if里 if在for循环内,每循环一次就return一次,值太多了 吧 。
作者: 黑马老兵    时间: 2012-3-26 11:06
for是一个循环体,return是用来结束函数的。你把return放在循环体内是嘛意思类。想结束循环?那应该是用break,或者结束本次继续下次continue。return放在for 内应该就不识别了吧。而你定义的函数需要返回值却找不到return了。。。
作者: 袁野    时间: 2012-3-26 11:12
if 里要写个返回值 是跳出方法,在public 写的返回值是给int
作者: 冯建鹏    时间: 2012-3-26 11:12
因为您定义的方法 的返回类型是int类型,所以要有返回值啊,如果您的数组里面a[0]是最大的话,if里面的语句都不会执行到,如果你把return放到了if执行语句里面,这样的话,这个方法定义的返回类型为int,而if语句块没执行,所以就没执行到return语句,不就没返回语句了啊,所以会报错。
作者: 李井山    时间: 2012-3-26 12:19
这是逻辑问题啊,for循环中每一步的循环就是选出当前的最大值,整个for是选出数组的最大值。当然要在for后提交返回值。你的说法就是不提示错误,逻辑也是错的。
作者: 刘_浩    时间: 2012-3-26 13:04
肖发腾 发表于 2012-3-26 10:37
放在if{}中的时候提示缺少返回值。放在public就正常了。  
这个很好理解。public static int getmax(int[]  ...

明白了,谢谢。




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