本帖最后由 发哥-阿花 于 2013-12-2 16:04 编辑
你的代码没有改动时,是因为每次都是在判断str的第一个字符,然而循环完都满足。要想得到想要的结果,每次判断都要使其判断下一个字符,就和你改动过的一个道理。我这样说能看得懂吗?
- class StringTest1
- {
- public static void main(String[] args)
- {
- String s=" ab cd ";
- //sop(s);
- String s1=myTrim1(s);
- sop(s1);
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static String myTrim1(String str)
- {
- int start=0;
- int end=str.length()-1;
- while( str.startsWith(" ") && start<=end)
- //这里循环判断str的第一个字符,直到判断完字符串,结束,
- {
- start++;//循环结束后start的值是17
- //你要改变原字符串再判断,
- }
- while(start<=end && str.endsWith(" "))
- {
- end--;//与上面一个意思
- }
- str=str.substring(start,end+1);
- return str;
- }
- }
复制代码 下面是改了的代码,
- public static String myTrim1(String str)
- {
- int start=0;
- while( str.startsWith(" ") && start<=str.length()-1)
- {
- // start++;
- str = str.substring(start+1);//每循环一次就减去前面一个空格
- }
- int end = str.length()-1;//上个循环之后再定义end
- while(str.endsWith(" ") && end>=0)
- {
- end--;
- str = str.substring(0,end);//循环时减去最后面的空格
- }
- //str=str.substring(start,end);//这步不用做了,循环之后就是结果,return就可以了
- return str;
- }
复制代码
|