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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尘埃落定 中级黑马   /  2014-7-17 11:31  /  1977 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


如下截图:
一直在提示:This method must return a result of type int。
难道返回值不是int么?郁闷的要死,不知哪里的问题。
在线等答案。




10 个回复

倒序浏览
xibozglr 来自手机 中级黑马 2014-7-17 11:33:52
沙发
你的代码呢?
回复 使用道具 举报

看不到截图么?再传一次
  1. public static int[color=Red] searchIndex(char [] chs, char ch)[/color]{
  2.                 if(chs==null)
  3.                         throw new IllegalArgumentException("非法参数");
  4.                 for(int x =0;x<chs.length;x++){
  5.                         if(ch==chs[x])
  6.                                 return x;//遍历数组,如果存在,返回该字符所在角标。
  7.                         return -1;//如果不存在,则返回-1.
  8.                 }
  9.                
  10.         }
复制代码
回复 使用道具 举报
没有关系,之所以报错是因为你缺少返回值,你的for循环里面的返回值不一定走,所以你还需要在for循环外,加一个返回值
回复 使用道具 举报
北极£莜蓝 发表于 2014-7-17 11:59
没有关系,之所以报错是因为你缺少返回值,你的for循环里面的返回值不一定走,所以你还需要在for循环外,加 ...

循环外的返回值怎么加?
return0还是1,又不能直接写return......
回复 使用道具 举报
你定义的方法返回值的类型是int类型的,而且你返回的x是for循环中的局部变量
回复 使用道具 举报
  1. public class SearchChar {
  2.         public static void main(String[] args) {
  3.                 char[] ch = {'a','s','d','f','g'};
  4.                 char c = 's';
  5.                 int index = searchIndex(ch,c);
  6.                 System.out.println(index);
  7.         }
  8.         public static int searchIndex(char[] ch,char c){
  9.                 int index = 0;
  10.                 for (int i=0;i<ch.length;i++) {
  11.                         if(ch[i] == c)
  12.                                 index = i;
  13.                 }
  14.                 return index;
  15.         }
  16. }
复制代码

在方法中定义一个变量,用来记录找到char的角标,然后在把变量作为返回值就可以了

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
吴杰栋 发表于 2014-7-17 13:18
在方法中定义一个变量,用来记录找到char的角标,然后在把变量作为返回值就可以了 ...

多谢多谢。
回复 使用道具 举报
我觉得不是@吴杰栋 说的原因。
你的代码写的本身就有问题,return -1; 语句写在了for循环里面,这样,假如数组第一个元素判断不是时,就会返回-1,后面的数组元素就不会继续判断了。把return -1;语句移到for循环外面才对。
  1. public static int searchIndex(char [] chs, char ch){
  2.     if(chs==null)
  3.         throw new IllegalArgumentException("非法参数");
  4.     for(int x =0;x<chs.length;x++){
  5.         if(ch==chs[x])
  6.             return x;//遍历数组,如果存在,返回该字符所在角标。
  7.         
  8.     }
  9.     return -1;//如果不存在,则返回-1.
  10. }
复制代码



回复 使用道具 举报
应该把return  -1   写在循环外面,不然你的循环根本实现不了,执行一次就返回-1结束了
回复 使用道具 举报
index可有可有无,老师讲的时候加了index,但是没有也可以运行。楼主的错误就是大括号的问题,return应该在for循环语句之后,而不应该在语句内。楼上两位是正解!!
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马