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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄长利 中级黑马   /  2012-3-28 08:51  /  2438 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在函数的返回值问题有一点疑惑,代码如下:
  1. class ArrayFind
  2. {
  3.         public static int getIndex(char[] arr, char a)throws IllegalArgumentException
  4.         {
  5.                 if(arr==null)
  6.                         throw new IllegalArgumentException("数组为空值");
  7.                 for(int x=0; x<arr.length; x++)
  8.                 {
  9.                         if(arr[x]==a)
  10.                                 return x;
  11.                         return -1;
  12.                 }
  13.         }
  14.         public static void main(String[] args)
  15.         {
  16.                 char[] arr = {'A','B','C','D'};
  17.                 System.out.println(getIndex(arr,'A'));
  18.         }
  19. }
复制代码
其中代码第十一行应该写在外边的,我错写在了里边,但是也算是有一个返回值语句呀,为什么我编译的时候
确实以下结果呢?

4 个回复

倒序浏览
本帖最后由 曹魁 于 2012-3-28 08:59 编辑

把第11行的return -1,挪到12行就可以了!
class ArrayFind

{

        public static int getIndex(char[] arr, char a)throws IllegalArgumentException

       {

                if(arr==null)

                        throw new IllegalArgumentException("数组为空值");

                for(int x=0; x<arr.length; x++)

                {

                        if(arr[x]==a)
                                return x;
                       }
        return -1;      
       }

        public static void main(String[] args)

        {

                char[] arr = {'A','B','C','D'};
                System.out.println(getIndex(arr,'A'));

        }

}
回复 使用道具 举报
函数上定义了返回值类型int,最后一定要写上return,这个return要显式的放到函数的最后一行,
而不能仅仅放到内部的if,for等其他代码块中。
回复 使用道具 举报
return -1;

执行不到,应该放到下面那个循环体的外边
回复 使用道具 举报
假如  arr 为空,for循环int x=0; x<arr.length  就不满足 条件, for 循环就不往下执行,  就没有返回值。   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马