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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Cola 中级黑马   /  2013-11-28 20:27  /  1916 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

模拟trim方法,去除字符串两端空格,while中用startsWith和endsWith判断,请问为什么没出现想要的结果呢?
  1. class StringTest1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s="      ab  cd     ";
  6.                 //sop(s);
  7.                 String s1=myTrim1(s);
  8.                 sop(s1);

  9.         }
  10.         public static void sop(Object obj)
  11.         {
  12.                 System.out.println(obj);
  13.         }

  14.         public static String myTrim1(String str)
  15.         {
  16.                 int start=0;
  17.                 int end=str.length()-1;
  18.                 while(start<=end&&str.startsWith(" "))
  19.                 {
  20.                         start++;
  21.                 }
  22.                 while(start<=end&&str.endsWith(" "))
  23.                 {
  24.                         end--;
  25.                 }
  26.                 sop(start);
  27.                 sop(end);
  28.                 str=str.substring(start,end+1);
  29.                 return str;
  30.         }

  31. }
复制代码



3 个回复

倒序浏览
while中用startsWith和endsWith判断,你的start在增加没错,但是你并没有将你得到的新字符串覆盖原来的字符串
对于第一个while,应改一下:
start++;
str=str.substring(start, str.length());
//测试
System.out.println(str);

对于第二个while,也要改一下:
   end=str.length()-1;
  str=str.substring(start,end);
  System.out.println(str);
这样并没有解决@Cola你的问题,输出结果为ad    cd,中间没去掉,希望给你带来一点思路。

我的思路与你这个不一样,这是我实现的代码,
  1. package heima;

  2. public class StringTest2 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub

  8.                 String s="      ab  cd     ";
  9.                 System.out.println(mytrim(s));
  10.         }

  11.         public static String mytrim(String str)
  12.         {
  13.           
  14.             
  15.                 //生成新的字符串
  16.            char[]  newstr=new char[str.length()];
  17.            //计数
  18.            int count=0;
  19.            for(int i=0;i<str.length();i++)
  20.            {
  21.                    char c=str.charAt(i);
  22.                    if(c!=' ')
  23.                    {
  24.                           newstr[count]=c;
  25.                           count++;
  26.                    }
  27.            }
  28.         return new String(newstr,0,count);
  29.           
  30.         }
  31. }
复制代码


回复 使用道具 举报
同学、问题已经解决了吗?
如果没有、就去新版28期问吧,26~27已经结束了。开班了!
http://bbs.itheima.com/forum-165-1.html

如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
回复 使用道具 举报
FFF 发表于 2013-12-2 00:16
同学、问题已经解决了吗?
如果没有、就去新版28期问吧,26~27已经结束了。开班了!
http://bbs.itheima.co ...

去28期提问了,谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马