黑马程序员技术交流社区
标题:
为什么总是提示没有返回语句?
[打印本页]
作者:
HeiMaYSL
时间:
2012-5-10 17:19
标题:
为什么总是提示没有返回语句?
class test4
{
//定义某个字符串的打印方法。
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
//方式一
String str1="abkkHellohhakskk";
String str2="asHellohhadfid";
sop("字符串1为:"+str1);
sop("字符串2为:"+str2);
sop("这两个字符串中相同最大的字符串为:"+getMaxSub(str1,str2));
}
public static String getMaxSub(String s1,String s2)
{
String max="", min=""; //定义两个最大值和最小值变量
max=(s1.length()>s2.length())?s1:s2; //如果s1的长度大于s2的,那么s1就是最大的,
//就把s1赋给最大值变量max
min=(max==s1)?s2:s1; //如果最大值等于s1时,那么s2就是最小值。就把s2赋给最小值变量min.
//从那个小的字符串中查找与大的字符串相同的字符。这样可以优化内存。
for (int x=0;x<min.length();x++)
{
for (int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
{
String temp=min.substring(y,z);
if (max.contains(temp)) //if(s1.indexOf(temp)!=-1)
return temp;
}
}
}
}
为什么java虚拟机在编译时,总是提示我没有返回语句啊?我明明已经有return 了。应该返回了。
作者:
黄坚声
时间:
2012-5-10 17:22
主要了,Java虚拟机没有编译功能,楼上问题有矛盾!
作者:
黄坚声
时间:
2012-5-10 17:23
主意了,Java虚拟机没有编译功能,楼上问题有矛盾!
作者:
黄坚声
时间:
2012-5-10 17:23
注意了,Java虚拟机没有编译功能,楼上问题有矛盾!
作者:
黄坚声
时间:
2012-5-10 17:25
问题很简单!
你应该在方法的末尾还要加上return语句,保证你能绝对解决!
作者:
杨威
时间:
2012-5-10 17:29
本帖最后由 杨威 于 2012-5-10 17:33 编辑
确实少了哦,你说的只是return temp,如果没有呢
class test4
{
//定义某个字符串的打印方法。
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
//方式一
String str1="abkkHellohhakskk";
String str2="asHellohhadfid";
sop("字符串1为:"+str1);
sop("字符串2为:"+str2);
sop("这两个字符串中相同最大的字符串为:"+getMaxSub(str1,str2));
}
public static String getMaxSub(String s1,String s2)
{
String max="", min=""; //定义两个最大值和最小值变量
max=(s1.length()>s2.length())?s1:s2; //如果s1的长度大于s2的,那么s1就是最大的,
//就把s1赋给最大值变量max
min=(max==s1)?s2:s1; //如果最大值等于s1时,那么s2就是最小值。就把s2赋给最小值变量min.
//从那个小的字符串中查找与大的字符串相同的字符。这样可以优化内存。
for (int x=0;x<min.length();x++)
{
for (int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
{
String temp=min.substring(y,z);
if (max.contains(temp)) //if(s1.indexOf(temp)!=-1)
return temp;
}
}
return "";//这里少了
}
}
复制代码
作者:
韩慧阳
时间:
2012-5-10 17:33
public static String getMaxSub(String s1,String s2)
{
String max="", min=""; //定义两个最大值和最小值变量
max=(s1.length()>s2.length())?s1:s2; //如果s1的长度大于s2的,那么s1就是最大的,
//就把s1赋给最大值变量max
min=(max==s1)?s2:s1; //如果最大值等于s1时,那么s2就是最小值。就把s2赋给最小值变量min.
//从那个小的字符串中查找与大的字符串相同的字符。这样可以优化内存。
for (int x=0;x<min.length();x++)
{
for (int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
{
String temp=min.substring(y,z);
if (max.contains(temp)) //if(s1.indexOf(temp)!=-1)
return temp;
}
}
return "";//这里应该加一条return,因为你上面的if()满足了才会返回temp,那如果不满足if()或者for循环根本就没有执行呢?这个方法中的语句不管有
//没有执行都应该有返回值的。如果for没有被执行或者if知道循环结束也没有被执行,而你这时候不需要返回什么东西,那就return "";嘛。
}
作者:
杨鹏
时间:
2012-5-10 17:46
因为楼主的return语句是写在 for (int x=0;x<min.length();x++) {}这个循环主体的里面,试想一下:循环是要有条件的,如果这个循环的条件不满足,那么循环的代码块就执行不到,也就没有了返回值,所以会报错。一般在写返回语句的时候,前面进行判断,然后给要返回的变量进行赋值,在函数的末尾return 变量名或者返回值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2