黑马程序员技术交流社区
标题:
String 练习题中 的问题
[打印本页]
作者:
yujiangjiao
时间:
2014-3-22 16:27
标题:
String 练习题中 的问题
本帖最后由 yujiangjiao 于 2014-3-23 16:59 编辑
//需求:获取两个字符串中最大相同字串
class StringTest4
{
public static String getMaxString(String str1,String str2)
{
for (int x=0;x<str2.length() ;x++ )
{
for (int y=0,z=str2.length()-x;z!=str2.length()+1 ;y++,z++ )
{
String temp= str2.substring(y,z);//str2的子串
if(str1.contains(temp))
return temp;
}
}
return null;//为什么此处要返回null???
}
public static void main(String[] args)
{
String str1="waoeouehellouwhuiuoq";
String str2="sheuhelloiro";
System.out.println("MaxString="+getMaxString(str1,str2));
}
}
不明白为什么getMaxString 下面要返回null,返回null又怎么能获取最大字串?求亲们解答,谢谢··
作者:
Sage
时间:
2014-3-22 16:44
public class StringTest {
/**
* 获取两个字符串中最大相同字串
*/
public static void main(String[] args) {
String str1 = "waoeouehellouwhuiuoq";
String str2 = "sheuhelloiro";
System.out.println("MaxString=" + getMaxString(str1, str2));
}
public static String getMaxString(String str1, String str2)
{
// String可以看成char[]
for (int x = 0; x < str2.length(); x++) {
for (int y = 0, z = str2.length() - x; z != str2.length() + 1; y++, z++) {
String temp = str2.substring(y, z); // temp:截取的相同字符串
if (str1.contains(temp)) { // 当前字符串是否包含截取的字符串
return temp; // 包含,则返回该截取的字符串temp
}
}
}
return null;// 循环遍历结束,如不包含,则返回空;null指空引用,当然也可以用""表示,不过null更为恰当
}
}
复制代码
作者:
李猛
时间:
2014-3-22 17:06
当返回null是表示字符串str2与字符串str1没有字符交集,也就是没有相同的字符。null并不是字符串,因为String不是基本数据类型,String是类,所以类定义的变量表示类引用,引用的值可以为空,所以返回值可以是null。这点不重要,现在可能你还没学到这章节,所以不必深入研究,等你接触就明白了,你现在只要知道他在该程序的作用就好了
作者:
Mr.__ㄨīn
时间:
2014-3-22 17:35
<span style="background-color: rgb(255, 255, 255);">public static String getMaxString(String str1,String str2)</span><div>{
for (int x=0;x<str2.length() ;x++ )
{
for (int y=0,z=str2.length()-x;z!=str2.length()+1 ;y++,z++ )
{
String temp= str2.substring(y,z);//str2的子串
if(str1.contains(temp))
return temp;
}
}
return null;
}</div>
复制代码
1.return是返回方法的返回值,其类型要和方的保持一致函数中定义的是String类型,当
for循环结束,
没有获取最大相同的字符串时,不会有结果。但有定义的有返回值,所以要返回一个返回值。
2.renturn的用处就是结束当前域的操作。
当你获取到字符串时,执行if语句下的代码块return temp ,执行return之后会结束这个方法,也就不会运行到return null了。
作者:
郭黎明
时间:
2014-3-22 18:59
public static String getMaxString(String str1,String str2)
{
for (int x=0;x<str2.length() ;x++ )
{
for (int y=0,z=str2.length()-x;z!=str2.length()+1 ;y++,z++ )
{
String temp= str2.substring(y,z);//str2的子串
if(str1.contains(temp))
return temp; //此处的temp即为要返回的String类型
}
}
return null;// 此处是为了防止报错
}
作者:
赵彦丰
时间:
2014-3-22 19:41
if如果为真 直接就返回temp值 如果假 就表示没有相同字符串 就返回null, 这是一个程序员必须考虑的步骤
public static String getMaxString(String str1,String str2)
{
for (int x=0;x<str2.length() ;x++ )
{
for (int y=0,z=str2.length()-x;z!=str2.length()+1 ;y++,z++ )
{
String temp= str2.substring(y,z);//temp:截取的相同字符串
if(str1.contains(temp))
return temp; //此处的temp即为要返回的String类型
}
}
return null;//if如果为真 直接就返回temp值 如果假 就表示没有相同字符串 就返回null, 这是一个程序员必须考虑的步骤
}
复制代码
作者:
yujiangjiao
时间:
2014-3-23 16:58
嗯,明白了,谢谢大家。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2