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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,最近在复习毕老师的基础课程,敲完课程中的一个练习,没有出现预期的效果,求解答!

  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方法,没有起作用啊!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

9 个回复

倒序浏览
算法,有问题,start与end应该只判断到它遇到一个不为" "的字符就跳出就行了,然后用substring截取不就行了.
当然最简单的还是正则.

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 吴传淦 于 2013-5-1 17:56 编辑

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
21行23行都多了分号,相当于start++跟end++根本不在循环里,这不是你的想法
回复 使用道具 举报
结果是没错的
   |---while(start<=end && str.charAt(start)==' ');
   |---start++;
   |---while(start<=end && str.charAt(end)==' ');
   |---end --;
这几行代码是不满足条件的。细心的你是可以发现的

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
有时候就是一不细心,调试半天都发现不了,呵呵
回复 使用道具 举报
已解决,谢谢各位
回复 使用道具 举报
朱安柱 发表于 2013-5-1 20:51
已解决,谢谢各位

版主秘书拎砖提示您:        如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢

点评

你手劲真大啊,还拎砖,额  发表于 2013-5-1 22:13
回复 使用道具 举报
硬是没找到在哪编辑,改状态{:soso_e127:}
回复 使用道具 举报

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