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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 庄星睿 中级黑马   /  2012-6-6 21:23  /  1014 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

不用trim()方法去掉字符串两端的空格  遇到的问题分享一下
  1. class StringTest
  2. {
  3. public static void main(String[] args)
  4. {
  5. String s=" Array.java ";
  6. System.out.println(trim(s));
  7. }

  8. public static String trim(String str)
  9. {
  10. int start=0,end=str.length()-1;

  11. while(str.charAt(start)==' ' && start<=end)
  12. start++;
  13. while(str.charAt(end)==' ' && start<=end)
  14. end--;
  15. return str.substring(start,end+1);
  16. }

  17. }
复制代码
写完代码运行试了一下ok,随机传了几个空格或"",程序就挂了,数组角标溢出了,原来while()中的语句执行顺序出的问题
  1. class StringTest
  2. {
  3. public static void main(String[] args)
  4. {
  5. String s=" Array.java ";
  6. String s1=" ";
  7. String s2="";
  8. System.out.println(trim(s));
  9. System.out.println(trim(s1));
  10. System.out.println(trim(s2));
  11. }

  12. public static String trim(String str)
  13. {
  14. int start=0,end=str.length()-1;

  15. //while(str.charAt(start)==' ' && start<=end)
  16. while(start<=end && str.charAt(start)==' ')  //这里必须先判断角标,才能判断空格
  17. start++;
  18. //while(str.charAt(end)==' ' && start<=end)
  19. while(start<=end && str.charAt(end)==' ')
  20. end--;
  21. return str.substring(start,end+1);
  22. }

  23. }
复制代码
以后再写while语句一定要注意语句的执行顺序,以前忽略了,认为只要while(true),让程序多次执行即可,结果找了好半天才找到原因

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 非常好!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马