黑马程序员技术交流社区

标题: String类中的练习四,出问题了 [打印本页]

作者: 茄子    时间: 2014-6-11 18:43
标题: String类中的练习四,出问题了
本帖最后由 茄子 于 2014-6-11 20:41 编辑

大家好,我是茄子,这会儿又着急了,,看了半天找不到问题,

诸位火眼金睛,给瞅瞅,问题出在哪里??

运行结果是:guanzuodonghellopamengcan
                    并非是:hello

跪求解释啊!!


class getMaxsubString
{
        public String getMaxsub(String s1,String s2)
        {
                for(int x=0;x<s2.length();x++)
                {
                        for(int y=0,z=s2.length()-x;z<=s2.length();y++,z++)    //…………………………………………在这里,老师的写法是z!=s2.length()+1
                                                                                                                         //对于这个,不是很理解,写成我这样不是更好理解嘛
                                                                                                                     
                        {
                                String temp=s2.substring(y,z);
                                if(s1.contains(temp));
                                return temp;
                        }
                        
                }
                return "zhaoyujie";
        }
        public void sop(Object obj)
        {
                System.out.println(obj);
        }
        
}

public class StringMethordTest4 {

        public static void main(String[] args)
        {
                String s1="zhaoyujieholleguoyonglaing";
                String s2="guanzuodonghellopamengcan";
                getMaxsubString g=new getMaxsubString();
                g.sop(g.getMaxsub(s1,s2));
               
        }

}



作者: Gaara33    时间: 2014-6-11 18:49
你看你的字符串s1和时
作者: Gaara33    时间: 2014-6-11 18:51
刚才没写完,恩错了,你看你的字符串s1和s2

"zhaoyujieholleguoyonglaing";

“guanzuodonghellopamengcan”

哥们,你这hello是在s2里不假,但是,s1里面可是holle啊,这、、、、要写认真了呀
作者: 茄子    时间: 2014-6-11 18:54
Gaara33 发表于 2014-6-11 18:51
刚才没写完,恩错了,你看你的字符串s1和s2

"zhaoyujieholleguoyonglaing";

大哥,这问题是解决了,但是,运行结果还是不正确的!!!至少应该是一个小的共有子串才是啊!!!您给小的再看看呗!!!
作者: Gaara33    时间: 2014-6-11 19:00
你的输出结果是s2是必然的,你看写的内循环中

if语句,你加了个;分号,这句话就废掉了

然后接着向下下执行,是不是直接就return了

而且返回结果是s2.substring(0,s2.length())


也就是s2呀,内外循环都是只执行了一次,over了
作者: Gaara33    时间: 2014-6-11 19:04
茄子 发表于 2014-6-11 18:54
大哥,这问题是解决了,但是,运行结果还是不正确的!!!至少应该是一个小的共有子串才是啊!!!您给小 ...

我写下边了,if语句的用法,这一行,你不应该加;分号的,加之后,if语句就作废了,而且挡不住下边的return了,4楼还是5楼,我已经写了,你再看看
作者: blackstones1    时间: 2014-6-11 19:28
看看  学习下
作者: 茄子    时间: 2014-6-11 20:41
Gaara33 发表于 2014-6-11 19:00
你的输出结果是s2是必然的,你看写的内循环中

if语句,你加了个;分号,这句话就废掉了

为什么,这种错误,我就是检查不出来呢!!你是怎么看出来的,有没有什么办法啊??教教我喽
作者: Gaara33    时间: 2014-6-11 21:08
茄子 发表于 2014-6-11 20:41
为什么,这种错误,我就是检查不出来呢!!你是怎么看出来的,有没有什么办法啊??教教我喽 ...

呃、、、我觉得谁都会出些小错误,毕竟java语言这么严谨,可能是看别人的更容易找出错误吧,我有时候也会犯很多小错误。
作者: Gaara33    时间: 2014-6-11 21:10
茄子 发表于 2014-6-11 20:41
为什么,这种错误,我就是检查不出来呢!!你是怎么看出来的,有没有什么办法啊??教教我喽 ...

哦,对了,不知道你用什么编程的,要是用MyEclipse的话,很多规范错误编译的时候就出来提示了,相对来说更容易发现错误,你可以试试。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2