黑马程序员技术交流社区

标题: 去掉字符串两端的空格(不用trim())问题 [打印本页]

作者: 庄星睿    时间: 2012-6-6 21:23
标题: 去掉字符串两端的空格(不用trim())问题
不用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),让程序多次执行即可,结果找了好半天才找到原因




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