黑马程序员技术交流社区

标题: 新手请教:String类trim方法,去除字符串两端的空格 [打印本页]

作者: 朱安柱    时间: 2013-5-1 17:28
标题: 新手请教:String类trim方法,去除字符串两端的空格
如题,最近在复习毕老师的基础课程,敲完课程中的一个练习,没有出现预期的效果,求解答!

  1. /*
  2. * 模拟一个trim方法,去除字符串两端的空格
  3. */
  4. public class StringTrim {
  5. public static void main(String[] args) {
  6. String s =" Welcome to learn Java! ";
  7. sop("["+s+"]");
  8. String s1 = myTrim(s);
  9. sop("["+s1+"]");
  10. }
  11. //打印字符串的方法
  12. public static void sop(String str)
  13. {
  14. System.out.println(str);
  15. }
  16. //trim方法
  17. public static String myTrim(String str){
  18. int start = 0; //第一个位置
  19. int end = str.length()-1; //最后一个位置
  20. while(start<=end && str.charAt(start)==' ');
  21. start++;
  22. while(start<=end && str.charAt(end)==' ');
  23. end --;
  24. return str.substring(start, end+1);
  25. }
  26. }
复制代码

  定义的myTrim方法,没有起作用啊!

作者: 陈圳    时间: 2013-5-1 17:39
算法,有问题,start与end应该只判断到它遇到一个不为" "的字符就跳出就行了,然后用substring截取不就行了.
当然最简单的还是正则.
作者: 吴传淦    时间: 2013-5-1 17:51
本帖最后由 吴传淦 于 2013-5-1 17:56 编辑

你的源代码21行:while(start<=end && str.charAt(start)==' ');多了分号。去掉分号就可以了。
源代码23行:while(start<=end && str.charAt(end)==' ');也多了分号。去掉分号就可以了。
多了分号以后while没有停止条件,程序一直在运行。


作者: 黑马华    时间: 2013-5-1 17:59
21行23行都多了分号,相当于start++跟end++根本不在循环里,这不是你的想法
作者: Super_Class    时间: 2013-5-1 18:02
结果是没错的
   |---while(start<=end && str.charAt(start)==' ');
   |---start++;
   |---while(start<=end && str.charAt(end)==' ');
   |---end --;
这几行代码是不满足条件的。细心的你是可以发现的
作者: 朱安柱    时间: 2013-5-1 18:19
有时候就是一不细心,调试半天都发现不了,呵呵
作者: 朱安柱    时间: 2013-5-1 20:51
已解决,谢谢各位
作者: 刘胜寒    时间: 2013-5-1 21:57
朱安柱 发表于 2013-5-1 20:51
已解决,谢谢各位

版主秘书拎砖提示您:        如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: 朱安柱    时间: 2013-5-2 08:47
硬是没找到在哪编辑,改状态{:soso_e127:}
作者: 黄玉昆    时间: 2013-5-3 22:35

看图吧





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