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

© 邵阳 中级黑马   /  2012-7-8 11:50  /  1910 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邵阳 于 2012-7-8 14:08 编辑

class Demo
{
        public int show(char[]arr,char num)
        {
                for (int i=0;i<arr.length ;i++ )
                {
                        if (num==arr)
                        return i;
                }
                return -1;//这里是什么意思啊。毕老师在第几天貌似讲 过,但是现在又迷糊啦。去掉不行吗?去掉显示没有返回值,为什么?      
        }
}
class Test
{
        public static void main(String[]args)
        {
                char[]arr={'*','&','%','^','#','%'};
                char num='%';
                Demo d=new Demo();
                System.out.println(d.show(arr,num));
        }

}

直接在for循环里的if判断语句定义  else{return -1}不行吗

7 个回复

正序浏览
邵阳 发表于 2012-7-8 12:50
直接在for循环里的if判断语句定义  else{return -1}不行吗

for循环式用来遍历整个数组的,在for循环外返回-1说明在整个数组都没找到,而你如果在if的后面直接加个else--return的话,那么在判断完数组的第一个元素后,只要不对就直接return了,岂不就成了判断数组中的第一个元素是否为指定数值了吗?!!建议把逻辑再想想!
回复 使用道具 举报
本帖最后由 曹恒业 于 2012-7-8 13:08 编辑
邵阳 发表于 2012-7-8 12:50
直接在for循环里的if判断语句定义  else{return -1}不行吗

如果你把else{return -1}放在for循环里了,那只要你查找的元素不是数组中的第一个元素,即使后面存在查找元素,也无法继续查找了。简言之,要在遍历数组所有元素之后,才能确定不存在需要查找的元素,else{return -1} 放在循环中会提前终止查找。
虽然不难理解,但还是建议你自己动手试试。
回复 使用道具 举报
田建 发表于 2012-7-8 11:55
其实我这么一看的话,你的代码有点问题这就相当于一个查找,查找到了就返回相应的索引值,下面的返回-1是表 ...

直接在for循环里的if判断语句定义  else{return -1}不行吗
回复 使用道具 举报
本帖最后由 梁健生 于 2012-7-8 13:38 编辑

class Demo
{
        public int show(char[]arr,char num)
        {
                for (int i=0;i<arr.length ;i++ )
                {
                        if (num==arr) //这地方应该是if(num == arr【i】)~~
                       return i;
                       //else
                          //   return -1;
      /*如果你把 return -1 加入这里的话,
                                                      只要查找第一个角标元素的值不等于 num那么 return-1 整个程序就结束了!!你认为合理吗?
                                                      做循环题的话你是不是应该考虑哪些需要在循环中哪些不需要?  希望楼主不要在迷糊了~~~*/
                }
               return -1;    //这里是什么意思啊。毕老师在第几天貌似讲 过,但是现在又迷糊啦。去掉不行吗?去掉显示没有返回值,为什么?

         // return i 表示输出与num相等字符的角标,因为角标没有负数,所以return -1 表示这个数组中没有与之相等的字符!!!   
        }
}
class Test
{
        public static void main(String[]args)
        {
                char[]arr={'*','&','%','^','#','%'};
                char num='%';
                Demo d=new Demo();
                System.out.println(d.show(arr,num));
        }

}

个人建议: 你忘记了 i 具体代表的意义~~可能是因为天太热的原因我们脑子都会有迷糊的时候,
                                                         太累了,中午就休息20-40分钟,精神充沛才能更好的学习~~。

评分

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

查看全部评分

回复 使用道具 举报
  1. for (int i=0;i<arr.length ;i++ )
  2. {
  3.        if (num==arr)
  4.              return i;
  5. }
  6. return -1;
复制代码
如果在你的for循环语句中,没有进入if语句,那么整个方法不就没有了返回值了?
所以,最后还是得return -1,从而表明for循环之后没有找到元素所在位置(数组中没有该元素);
回复 使用道具 举报
for (int i=0;i<arr.length ;i++ )
            {
                    if (num==arr)
                    return i;
            }
return -1;

上面的for循环中,有个if语句进行功能判断,满足num==arr后返回相应的角标i。
由于是return语句,所以不再执行下面的return -1;

而遍历完arr数组后都没有满足num==arr的元素后则执行最后的return -1;
相当于返回一个标志符号。标志着所以元素中都没有满足条件的。
类似于read()方法的结尾标识符,也是返回-1
回复 使用道具 举报
其实我这么一看的话,你的代码有点问题
  1. class Demo
  2. {
  3.         public int show(char[]arr,char num)
  4.         {
  5.                 for (int i=0;i<arr.length ;i++ )
  6.                 {
  7.                         if (num==arr)//这里应该是arr[i]
  8.                         return i;
  9.                 }
  10.                 return -1;//这里是什么意思啊。毕老师在第几天貌似讲 过,但是现在又迷糊啦。去掉不行吗?去掉显示没有返回值,为什么?      
  11.         }
  12. }
复制代码
这就相当于一个查找,查找到了就返回相应的索引值,下面的返回-1是表示没有找到!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马