不用trim()方法去掉字符串两端的空格 遇到的问题分享一下- class StringTest
- {
- public static void main(String[] args)
- {
- String s=" Array.java ";
- System.out.println(trim(s));
- }
- public static String trim(String str)
- {
- int start=0,end=str.length()-1;
- while(str.charAt(start)==' ' && start<=end)
- start++;
- while(str.charAt(end)==' ' && start<=end)
- end--;
- return str.substring(start,end+1);
- }
- }
复制代码 写完代码运行试了一下ok,随机传了几个空格或"",程序就挂了,数组角标溢出了,原来while()中的语句执行顺序出的问题- class StringTest
- {
- public static void main(String[] args)
- {
- String s=" Array.java ";
- String s1=" ";
- String s2="";
- System.out.println(trim(s));
- System.out.println(trim(s1));
- System.out.println(trim(s2));
- }
- public static String trim(String str)
- {
- int start=0,end=str.length()-1;
- //while(str.charAt(start)==' ' && start<=end)
- while(start<=end && str.charAt(start)==' ') //这里必须先判断角标,才能判断空格
- start++;
- //while(str.charAt(end)==' ' && start<=end)
- while(start<=end && str.charAt(end)==' ')
- end--;
- return str.substring(start,end+1);
- }
- }
复制代码 以后再写while语句一定要注意语句的执行顺序,以前忽略了,认为只要while(true),让程序多次执行即可,结果找了好半天才找到原因 |