黑马程序员技术交流社区

标题: 毕向东老师的字符串练习 [打印本页]

作者: 程立彬    时间: 2011-11-21 09:24
标题: 毕向东老师的字符串练习
本帖最后由 程立彬 于 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就没有问题了,请问是不是我哪里想错了,还是毕老师的视频有一点小问题,我先声明一下本人绝对没有挑战毕老师的意思
作者: 申绪胜    时间: 2011-11-21 10:24
如果为空的话,长度为0,那么初始end就为—1了,
然后到这条语句的时候String s = str.substring(start,end+1);
也就是String s=str.substring(0,0),也就是从第一个位置开始截取0个字符,还是空值,
老师写的没错
作者: 程立彬    时间: 2011-11-21 11:34
申绪胜 发表于 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吗,这样不是错了吗?
作者: 花开~的季节    时间: 2012-2-20 22:14
0的话,end就为-1了,问题就解决了赛,老师一般没啥问题




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