黑马程序员技术交流社区

标题: 关于return的问题 [打印本页]

作者: trhthyj    时间: 2014-5-2 13:11
标题: 关于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;
  22.                         }
  23.                 }
  24.                 return "";//这里不太明白,为什么非得写它?上面不是已经return过了吗?
  25.         }
  26. }
复制代码

作者: 张然龙    时间: 2014-5-2 13:24
本帖最后由 张然龙 于 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. }
复制代码




作者: 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
  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. }
复制代码

作者: 姜姗姗    时间: 2014-5-2 17:19
  1. 你定义的public static String getMaxSubString(String s1,String s2){


  2. }
  3. 这个方法有返回值类型,而且死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