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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程立彬 黑马帝   /  2011-11-21 09:24  /  2701 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 程立彬 于 2011-11-23 08:40 编辑

import java.lang.*;

public class MyTrim {

        public static void main(String[] args) {

                String str = "     ";
                Trim trim = new Trim();
                trim.myTrim(str);               
        }
}

//字符串截取类
class Trim{
        public void myTrim(String str)
        {
                int start = 0;
                int end =str.length() -1;
                while(str.charAt(start)  == ' ' && start < end){
                    start ++;
                              
                }

                while(str.charAt(end) == ' ' && start < end){
                         end--;
                }

                String s = str.substring(start,end+1);
                System.out.println("s="+s);
               
        }
}

在毕向东老师的讲解视频里面 while的循环条件为 start <= end,可是这样当我运行程序,将 传入的 string设为空的时候 会出现异常,而把它设为 start<end就没有问题了,请问是不是我哪里想错了,还是毕老师的视频有一点小问题,我先声明一下本人绝对没有挑战毕老师的意思

3 个回复

正序浏览
0的话,end就为-1了,问题就解决了赛,老师一般没啥问题
回复 使用道具 举报
申绪胜 发表于 2011-11-21 10:24
如果为空的话,长度为0,那么初始end就为—1了,
然后到这条语句的时候String s = str.substring(start,end ...

substring(start,end)两个参数的区间,不是包含start不包含end吗即 【start,end)
如果end一开始为 -1了,因为 str.length() -1 == -1
那么执行String s = str.substring(0,0)的时候,不应该是 从 0到-1吗,这样不是错了吗?
回复 使用道具 举报
如果为空的话,长度为0,那么初始end就为—1了,
然后到这条语句的时候String s = str.substring(start,end+1);
也就是String s=str.substring(0,0),也就是从第一个位置开始截取0个字符,还是空值,
老师写的没错

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马