日期:2014-05-20  浏览次数:20738 次

关于返回值的问题 求大牛给个解释。。。。

//获取两个字符串中最大相同的子串

class StringText4
{
public static void print(String str)
{
System.out.println(str);
}
public static String getMaxSubString(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="skdfjkhelloworldjdfkjfkkfdj";
String s2="kdjhelloworlddfd";
print(getMaxSubString(s1,s2));
}
}
return""这个是什么意思呢 ??我知道必须要返回一个字符串,但是for里面的不是已经返回了吗?
外面的接收不到吗?返回这块始终搞不清楚怎么回事,哪位大牛给讲一下嘛,,或者给我复制一份别的网站的资料也好
,上面的""的内容是不是替换了temp的值啊??

------解决方案--------------------
那个应该是在for语句出错的时候 返回的吧 如果for没错 那就直接在for里返回了比如 s.length()=0
偶是这样理解地 坐等大神 详细解释
------解决方案--------------------

Java code

    public static String getMaxSubString(String s1, String s2) {
        for (int x = 0; x < s2.length(); x++) {//如果s2.length==0,就没有返回值了。
            for (int y = 0, z = s2.length() - x; z < s2.length() + 1; y++, z++) {//同理
                String temp = s2.substring(y, z);
                if (s1.contains(temp))//如果if没找到,也没有返回值了。
                    return temp;
                //else return "";//加上了,还有两面两种情况。
            }
            
        }
        return "";//所以这里要加return;
    }

------解决方案--------------------
这样就使程序更好点!当两层循环都没执行时, return "";就是必要的了!
------解决方案--------------------
探讨
我还是不大明白 这个题我做出来之后,出现了好几次的错误 就是因为return的那块出的问题,我后来就把里面的返回值也加上了 后来就能运行成功了 但是我不知道为什么这样就能成功 ,关于return的用法不大懂,希望你能详细的讲一下。。。。

------解决方案--------------------
探讨
是不是最后的那个return""的作用是如果那个for循环之后都没有能找到满足的条件时 就返回的值啊 我试过了,如果s2 的字符串没有的话 就会返回return""的值。 是不是加了return的好处就是在于如果条件满足了就直接返回给调用该函数的调用者了啊??

------解决方案--------------------
探讨

Java code

public static String getMaxSubString(String s1, String s2) {
String mark = "";
for (int x = 0; x < s2.length(); x++) {
for (int y = 0, z = s2.length() - x; z <……

------解决方案--------------------
不是有个if语句吗。如果if语句没有执行呢?就没有返回值。
所以加一句返回空串是为了防止抛异常