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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ☆枫の云 于 2014-5-16 13:02 编辑

今天看到String的练习四了,发现老师的一个方法中有两个return,为什么要定义两个return,而且方法返回的还是内循环的return temp,但是为什么有一个return "",既然返回了空为啥打印方法还能得到值呢?而且这一个return还不能删除,删除就报错,为什么?
  1. class StringTest3
  2. {        
  3.         public static String getString(String s1,String s2){
  4.                 for(int x=0;x<s2.length();x++){
  5.                         for(int y=0,z=s2.length()-x;z!=(s2.length()+1);y++,z++){
  6.                                 String temp = s2.substring(y,z);

  7.                                 if(s1.contains(temp)){
  8.                                         return temp;
  9.                                 }
  10.                         }
  11.                 }
  12.                 return "";
  13.         }

  14.         public static void main(String[] args)
  15.         {
  16.                 String s1 = "abcwerthelloyuiodef";
  17.                 String s2 = "cvhellobnm";

  18.                 sop(getString(s1,s2));
  19.         }

  20.         public static void sop(Object obj){
  21.                 System.out.println(obj);
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
我也刚看到这,return temp;是如果判断到有相同的子串就返回了子串。  return "";是如果没有相同的子串前面没有返回值的,所以等外层循环结束要返回个空值。
你可以试试把 return "";改为 return "无相同子串";试试。
个人意见。求探讨求指教。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 很给力!

查看全部评分

回复 使用道具 举报
我也有这个疑问
回复 使用道具 举报
本帖最后由 ☆枫の云 于 2014-5-16 12:53 编辑
丁绍然 发表于 2014-5-16 10:53
我也刚看到这,return temp;是如果判断到有相同的子串就返回了子串。  return "";是如果没有相同的子串前面 ...

有道理!哥们儿真聪明,如果有相同,temp就能返回,如果没有相同的子串,temp就读不到,但是也必须返回,谢谢!
回复 使用道具 举报
因为getString方法前面有个返回类型String,所以要用return。说下为什么要用两个return,如果只用if里面的return,一旦if条件永远不成立即永远不会执行return方法,即永远得不到返回值,所以编译器为了安全会报错,这时需要在代码末尾写一个return 以保证有值可返回。至于为什么return空字符串,这个没必要纠结,只是一个标识而已,告诉你这个方法中的if没有成立,你也可以自定义设置其他值。
回复 使用道具 举报
本帖最后由 136616244 于 2014-5-17 00:26 编辑

帅哥,你要把前面视频重新看一遍了,别往后学了,你前面没学好,后面有的你受的。
基本的东西都不知道,越学越迷糊的,
return语句只要执行到就会返回,函数就结束了,但要看前面的条件能执行到那条return语句。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马