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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王贵朝 中级黑马   /  2012-9-25 10:26  /  1630 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王贵朝 于 2012-9-25 10:54 编辑

class MyTrim
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                String str = "  dsfa   ";
                sop(str);
                String s = myTrim(str);
                sop(s);
        
        
        
        }
        //去掉字符串两端的空格
        public static String myTrim(String str)
        {
                int start = 0,end = str.length()-1;//
                while(start<=end && str.charAt(start)==' ')
                        start++;
                while(start<=end && str.charAt(end)==' ')
                        end--;
                String s = str.substring(start,end-1);
                return s;
        }

}



11.png (1019 Bytes, 下载次数: 26)

11

11

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
     public static String myTrim(String str)
        {
                int start = 0,end = str.length()-1;//
                while(start<=end && str.charAt(start)==' ')
                        start++;
                while(start<=end && str.charAt(end)==' ')
                        end--;
                String s = str.substring(start,end-1);  / / 应该是这样 String s = str.substring(start,end+1);  
                return s;
        }

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
首先string有一个方法,trim()可以除去两边的空格 。
就你这个问题看,打印出end 和start 的值分别为5和2,
再最后有一个end--,end的实际值就变成了4,substring()是从start开始到end-1结束的。看一下api。
也就是说你的substring()是这样的substring(2,4),当然打印出来的就是ds了

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class MyTrim
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                String str = "  dsfa   ";
                sop(str);
                String s = myTrim(str);
                sop(s);
        
        
        
        }
        //去掉字符串两端的空格
        public static String myTrim(String str)
        {
                int start = 0,end = str.length()-1;
                while(start<=end && str.charAt(start)==' ')
                        start++;
                while(start<=end && str.charAt(end)==' ')
                        end--;
                String s = str.substring(start,end+1);//这个地方应改为end+1
                                                 //原因是subString在截取字符串时是不包括end的,而在while语句
             //条件不满足时,此时end的位置在a字符上,然后在end-1时,在截取
             //的时候就截取了ds。
                return s;s
        }
}

1.jpg (3.55 KB, 下载次数: 30)

运行结果

运行结果

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
谢谢各位,明白了,因为第一次的时候length()没-1,导致end也写成-1了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马