黑马程序员技术交流社区

标题: 【资源分享】看了毕老师的视频写的有关String的代码分享... [打印本页]

作者: 蒙奇.D.路飞    时间: 2014-5-16 22:47
标题: 【资源分享】看了毕老师的视频写的有关String的代码分享...
本帖最后由 李小然 于 2014-5-17 10:54 编辑
  1. public class StringTest1 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 System.out.println(StringMethod.getCount("nbaernbatynbauklnbanbasrtnba","nba"));
  8.                 System.out.println(StringMethod.myTrim(" ab c  "));
  9.                 System.out.println(StringMethod.sortString("bacedhgf"));
  10.                 System.out.println(StringMethod.reverseString("sbc"));
  11.         }

  12. }
  13. //有关String方法的练习
  14. class StringMethod{
  15.         //在长串中找字串出现的次数
  16.         public static int getCount(String str,String substr)
  17.         {
  18.                 //从哪个角标开始查找
  19.                 int fromIndex=0;
  20.                 //定义一个计数器的变量
  21.                 int count=0;
  22.                 //如果角标不为零就循环
  23.                 while((fromIndex=str.indexOf(substr, fromIndex))!=-1)
  24.                 {
  25.                         //改变查找的角标
  26.                         fromIndex+=substr.length();
  27.                         //若查到字串就自加
  28.                         count++;
  29.                 }
  30.                 //返回计数器
  31.                 return count;
  32.         }
  33.         //去除前后空白的方法
  34.         public static String myTrim(String str)
  35.         {
  36.         //1.去除空白        ,获取字符串的有效部分
  37.                 //定义两个变量表示头尾
  38.                 int start=0;
  39.                 int end=str.length();
  40.                 //判断是否为空白,是,头角标自加
  41.                 while(start<=end && str.charAt(start)==' ')
  42.                 {
  43.                         start++;
  44.                 }
  45.                 //判断是否为空白,是,尾角标自减
  46.                 while(start<=end&&str.charAt(end-1)==' ')
  47.                 {
  48.                         end--;
  49.                 }
  50.                 //返回字串从头角标不是空白开始到为角标不是空白为止。注,substring方法包含头角标不包含尾角标,所以尾角标要加1
  51.                 return str.substring(start, end+1);
  52.                         
  53.         }
  54.         //为字符串排序的方法
  55.         public static String sortString(String str)
  56.         {
  57.                 //把字符串转成字符数组
  58.                 char[] ch=str.toCharArray();
  59.                 //提出为字符数组排序的方法
  60.                 sortCharArray(ch);
  61.                 //把字符数组转成字符串
  62.                 String str1=new String(ch);
  63.                 //返回字符串
  64.                 return str1;
  65.                
  66.         }
  67.         //为字符数组排序的方法
  68.         private static void sortCharArray(char[] ch)
  69.         {
  70.                
  71.                 for(int i=0;i<ch.length;i++)
  72.                 {
  73.                         for(int j=i+1;j<ch.length;j++)
  74.                         {
  75.                                 if(ch[i]>ch[j])
  76.                                 {
  77.                                         exchange(ch,i,j);
  78.                                 }
  79.                         }
  80.                 }
  81.         }
  82.         //将字符串反转的方法
  83.         public static String reverseString(String str)
  84.         {
  85.                 char ch[]=str.toCharArray();
  86.                 //反转字符串
  87.                 reverse(ch);
  88.                 String str1=new String(ch);
  89.                 return str1;
  90.         }
  91.         private static void reverse(char[] ch) {
  92.                 // TODO Auto-generated method stub
  93.                 //需要头和尾交换所以定义头尾两个变量
  94.                 int start=0;
  95.                 int end=ch.length-1;
  96.                 while(start<end)
  97.                 {
  98.                         exchange(ch,start,end);
  99.                         start++;
  100.                         end--;
  101.                 }
  102.                
  103.         }
  104.         //交换方法
  105.         private static void exchange(char[] a,int c, int d) {
  106.                 // TODO Auto-generated method stub
  107.                 char temp;
  108.                 temp=a[c];
  109.                 a[c]=a[d];
  110.                 a[d]=temp;
  111.         }


  112. }
复制代码

顺便问一下 我写的交换方法为什么private static void exchange(char a, char d)这样定义就不交换了呢?求解
作者: skill20    时间: 2014-5-16 23:13
交换两个基本类型的变量,在栈内存中,你换来换去有啥意思,数组的又没变。
作者: 蒙奇.D.路飞    时间: 2014-5-16 23:28
哦哦 也就是说在数组中没有交换啊
作者: 赵京    时间: 2014-5-17 07:31
你这个最好写个题目,例如这个题目是要求做什么,如果没写,乍一看,不知道你这是在写什么代码,题目要求,还有题目前期分析写上,版主才有可能给你分的
作者: 蒙奇.D.路飞    时间: 2014-5-17 08:31
这个技术分真感觉难得啊 谢谢了
作者: 蒙奇.D.路飞    时间: 2014-5-17 15:58
赵京 发表于 2014-5-17 07:31
你这个最好写个题目,例如这个题目是要求做什么,如果没写,乍一看,不知道你这是在写什么代码,题目要求, ...

谢谢啊 我居然没看到回复,我还给自己回复了,糗大了




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