黑马程序员技术交流社区
标题:
去掉字符串两端的空格(不用trim())问题
[打印本页]
作者:
庄星睿
时间:
2012-6-6 21:23
标题:
去掉字符串两端的空格(不用trim())问题
不用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),让程序多次执行即可,结果找了好半天才找到原因
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2