黑马程序员技术交流社区
标题:
关于return的问题
[打印本页]
作者:
trhthyj
时间:
2014-5-2 13:11
标题:
关于return的问题
class StringTest4
{
public static void main(String[] args)
{
String s1="abcwerthelloyuiodef";
String s2="cvhellobnm";
System.out.println(getMaxSubString(s1,s2));
}
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);
System.out.println(temp);
if(s1.contains(temp))//if(s1.indexOf(temp)!=-1)
return temp;
}
}
return "";//这里不太明白,为什么非得写它?上面不是已经return过了吗?
}
}
复制代码
作者:
张然龙
时间:
2014-5-2 13:24
本帖最后由 张然龙 于 2014-5-2 17:36 编辑
你的功能我已经帮你实现了, 双重for嵌套双重if 呵呵 我写的代码其实很简单 你看两眼就明白了
class Demo2
{
public static void main(String args[])
{
String s1="abcwerthelloyuiodef";
String s2="cvhellobnm";
System.out.println(getMaxSubString(s1,s2));
}
static char getMaxSubString(String s1,String s2)
{
char max=0;
for(int i=0;i<s1.length();i++)//外循环遍历s1
{
for(int y=0;y<s2.length();y++)//内循环遍历s2
{
if(s1.charAt(i)==s2.charAt(y))//判断获取到的字符类型是否相等
{
if(s1.charAt(i)>max)//判断是否比当前存储的字符大?是就覆盖当前值,不是就返回。
{
max=s1.charAt(i);
}
}
}
}
return max;//将最后的运算结果返回
}
}
复制代码
作者:
trhthyj
时间:
2014-5-2 14:10
张然龙 发表于 2014-5-2 13:24
首先 你要养成良好的注释习惯。。其实我本人就不怎么爱用 呵呵 都不知道你的代码要实现什么功能
...
获取两个字符串中的最大相同字串
作者:
luoyilan222
时间:
2014-5-2 14:15
for(int x=0;x<s2.length();x++) 在这里 s2.length 如果等于 0 了
作者:
______雨点ペ
时间:
2014-5-2 15:19
这里的return,是将值返回给函数max的
作者:
姚贺鹏
时间:
2014-5-2 15:22
我知道你什么意思了,你是觉得上面有一个return,下面又有一个return.多一个是吗?其实并不冲突的,上面那个是if语句成立情况下return temp下面是if语句不成立时return""
作者:
XinWen
时间:
2014-5-2 16:06
首先 你的函数在声明的时候定义了 返回值,所以你的函数必须要返回 一个 String 的值。 你说的 里面已经 有了 一个 return 但那个 return 是在 if 语句当中的,在if 中就说明这个 return 可能会执行不到。 也就是不能保证 可定会有 返回值, 所以 ,你 还得再下面定义一个,确定程序代码肯定 会有一个 return 被执行
作者:
skill20
时间:
2014-5-2 17:19
class StringTest4
{
public static void main(String[] args)
{
String s1="abcwerthelloyuiodef";
String s2="cvhellobnm";
System.out.println(getMaxSubString(s1,s2));
}
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);
System.out.println(temp);
if(s1.contains(temp))//if(s1.indexOf(temp)!=-1)
return temp;//[color=Red]这里有返回值了,[/color]
}
}
return "";//这里不太明白,为什么非得写它?上面不是已经return过了吗?//上面如果没找到则要返 回空。因为函数要返回类型。
}
}
复制代码
作者:
姜姗姗
时间:
2014-5-2 17:19
你定义的public static String getMaxSubString(String s1,String s2){
}
这个方法有返回值类型,而且死String 类型,那么你就必须返回字符串,return“”在你的这个程序看来只是为了让编译通过,如果不想写的话,那么就得把返回值类型改成void,那么这个return"";就可以不写了
复制代码
作者:
张然龙
时间:
2014-5-2 17:42
你的功能我已经帮你实现了哈 看2楼沙发
作者:
362688114
时间:
2014-5-2 18:09
return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句)。
作者:
心?=忐§忑]
时间:
2014-5-2 20:35
因为你的方法在定义时是有返回值类型的啊,所以需要走返回值啊,而你的上面的的那个return是在for循环之中的,并不是这个方法之中的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2