黑马程序员技术交流社区
标题:
程序中两个return返回的为什么是temp那一个?
[打印本页]
作者:
☆枫の云
时间:
2014-5-16 10:27
标题:
程序中两个return返回的为什么是temp那一个?
本帖最后由 ☆枫の云 于 2014-5-16 13:02 编辑
今天看到String的练习四了,发现老师的一个方法中有两个return,为什么要定义两个return,而且方法返回的还是内循环的return temp,但是为什么有一个return "",既然返回了空为啥打印方法还能得到值呢?而且这一个return还不能删除,删除就报错,为什么?
class StringTest3
{
public static String getString(String s1,String s2){
for(int x=0;x<s2.length();x++){
for(int y=0,z=s2.length()-x;z!=(s2.length()+1);y++,z++){
String temp = s2.substring(y,z);
if(s1.contains(temp)){
return temp;
}
}
}
return "";
}
public static void main(String[] args)
{
String s1 = "abcwerthelloyuiodef";
String s2 = "cvhellobnm";
sop(getString(s1,s2));
}
public static void sop(Object obj){
System.out.println(obj);
}
}
复制代码
作者:
丁绍然
时间:
2014-5-16 10:53
我也刚看到这,return temp;是如果判断到有相同的子串就返回了子串。 return "";是如果没有相同的子串前面没有返回值的,所以等外层循环结束要返回个空值。
你可以试试把 return "";改为 return "无相同子串";试试。
个人意见。求探讨求指教。
作者:
张志民
时间:
2014-5-16 12:26
我也有这个疑问
作者:
☆枫の云
时间:
2014-5-16 12:44
本帖最后由 ☆枫の云 于 2014-5-16 12:53 编辑
丁绍然 发表于 2014-5-16 10:53
我也刚看到这,return temp;是如果判断到有相同的子串就返回了子串。 return "";是如果没有相同的子串前面 ...
有道理!哥们儿真聪明,如果有相同,temp就能返回,如果没有相同的子串,temp就读不到,但是也必须返回,谢谢!
作者:
yuZhe_toString
时间:
2014-5-16 12:46
因为getString方法前面有个返回类型String,所以要用return。说下为什么要用两个return,如果只用if里面的return,一旦if条件永远不成立即永远不会执行return方法,即永远得不到返回值,所以编译器为了安全会报错,这时需要在代码末尾写一个return 以保证有值可返回。至于为什么return空字符串,这个没必要纠结,只是一个标识而已,告诉你这个方法中的if没有成立,你也可以自定义设置其他值。
作者:
136616244
时间:
2014-5-17 00:24
本帖最后由 136616244 于 2014-5-17 00:26 编辑
帅哥,你要把前面视频重新看一遍了,别往后学了,你前面没学好,后面有的你受的。
基本的东西都不知道,越学越迷糊的,
return语句只要执行到就会返回,函数就结束了,但要看前面的条件能执行到那条return语句。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2