A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© trhthyj 中级黑马   /  2014-5-2 13:11  /  1592 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class StringTest4
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s1="abcwerthelloyuiodef";
  6.                 String s2="cvhellobnm";
  7.                 System.out.println(getMaxSubString(s1,s2));
  8.         }
  9.        
  10.         public static String getMaxSubString(String s1,String s2)
  11.         {
  12.                
  13.                
  14.                 for(int x=0;x<s2.length();x++)
  15.                 {
  16.                         for(int y=0,z=s2.length()-x;z!=s2.length()+1;y++,z++)
  17.                         {
  18.                                 String temp=s2.substring(y,z);
  19.                                 System.out.println(temp);
  20.                                 if(s1.contains(temp))//if(s1.indexOf(temp)!=-1)
  21.                                         return temp;
  22.                         }
  23.                 }
  24.                 return "";//这里不太明白,为什么非得写它?上面不是已经return过了吗?
  25.         }
  26. }
复制代码

11 个回复

倒序浏览
本帖最后由 张然龙 于 2014-5-2 17:36 编辑

你的功能我已经帮你实现了,  双重for嵌套双重if  呵呵 我写的代码其实很简单  你看两眼就明白了
  1. class Demo2
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 String s1="abcwerthelloyuiodef";
  6.         String s2="cvhellobnm";
  7.         System.out.println(getMaxSubString(s1,s2));
  8.         }
  9.         static char getMaxSubString(String s1,String s2)
  10.         {
  11.                 char max=0;
  12.                 for(int i=0;i<s1.length();i++)//外循环遍历s1
  13.                 {
  14.                         for(int y=0;y<s2.length();y++)//内循环遍历s2
  15.                         {
  16.                                 if(s1.charAt(i)==s2.charAt(y))//判断获取到的字符类型是否相等
  17.                                 {
  18.                                        
  19.                                         if(s1.charAt(i)>max)//判断是否比当前存储的字符大?是就覆盖当前值,不是就返回。
  20.                                         {
  21.                                                 max=s1.charAt(i);
  22.                                         }
  23.                                 }
  24.                         }
  25.                 }
  26.                 return max;//将最后的运算结果返回
  27.         }
  28. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
张然龙 发表于 2014-5-2 13:24
首先  你要养成良好的注释习惯。。其实我本人就不怎么爱用 呵呵  都不知道你的代码要实现什么功能
...

获取两个字符串中的最大相同字串
回复 使用道具 举报
for(int x=0;x<s2.length();x++)   在这里 s2.length 如果等于 0 了
回复 使用道具 举报
这里的return,是将值返回给函数max的
回复 使用道具 举报
我知道你什么意思了,你是觉得上面有一个return,下面又有一个return.多一个是吗?其实并不冲突的,上面那个是if语句成立情况下return temp下面是if语句不成立时return""
回复 使用道具 举报
首先 你的函数在声明的时候定义了 返回值,所以你的函数必须要返回 一个 String 的值。 你说的 里面已经 有了 一个 return 但那个 return 是在 if 语句当中的,在if 中就说明这个 return 可能会执行不到。 也就是不能保证 可定会有 返回值, 所以 ,你 还得再下面定义一个,确定程序代码肯定 会有一个 return 被执行
回复 使用道具 举报
  1. class StringTest4
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s1="abcwerthelloyuiodef";
  6.                 String s2="cvhellobnm";
  7.                 System.out.println(getMaxSubString(s1,s2));
  8.         }
  9.         
  10.         public static String getMaxSubString(String s1,String s2)
  11.         {
  12.                
  13.                
  14.                 for(int x=0;x<s2.length();x++)
  15.                 {
  16.                         for(int y=0,z=s2.length()-x;z!=s2.length()+1;y++,z++)
  17.                         {
  18.                                 String temp=s2.substring(y,z);
  19.                                 System.out.println(temp);
  20.                                 if(s1.contains(temp))//if(s1.indexOf(temp)!=-1)
  21.                                         return temp;//[color=Red]这里有返回值了,[/color]
  22.                         }
  23.                 }
  24.                 return "";//这里不太明白,为什么非得写它?上面不是已经return过了吗?//上面如果没找到则要返              回空。因为函数要返回类型。
  25.         }
  26. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
  1. 你定义的public static String getMaxSubString(String s1,String s2){


  2. }
  3. 这个方法有返回值类型,而且死String 类型,那么你就必须返回字符串,return“”在你的这个程序看来只是为了让编译通过,如果不想写的话,那么就得把返回值类型改成void,那么这个return"";就可以不写了
复制代码
回复 使用道具 举报
你的功能我已经帮你实现了哈  看2楼沙发
回复 使用道具 举报
return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句)。
回复 使用道具 举报
因为你的方法在定义时是有返回值类型的啊,所以需要走返回值啊,而你的上面的的那个return是在for循环之中的,并不是这个方法之中的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马