黑马程序员技术交流社区
标题:
小程序求解
[打印本页]
作者:
游兴钟
时间:
2012-4-17 18:53
标题:
小程序求解
class StringPractice
{
public static void main(String[] args)
{
String str =" dsfdsf gg ";
String s1 =myTrim(str);
sop("["+s1+"]");
}
public static String myTrim(String s)
{
int begin =0;
int end =s.length()-1;
char ch1= s.charAt(begin);
char ch2= s.charAt(end);
while(begin<=end &&ch1==' ')
begin++;
while(begin<=end &&ch2==' ')
end--;
return s.substring(begin,end+1);
}
public static void sop(Object str)
{
System.out.println(str);
}
}
public static String myTrim(String str)
{
int start = 0,end = str.length()-1;
while(start<=end && str.charAt(start)==' ')
start++;
while(start<=end && str.charAt(end)==' ')
end--;
return str.substring(start,end+1);
}
myTrim方法的这两种写法区别在哪?为什么得出的结果差别这么大。。
作者:
刘蕴学
时间:
2012-4-17 19:24
如果你说的是第一个方法为什么得到的结果不是trim方式的,原因在于你的第一个方法里,ch 2个并没有变化,ch1和ch2一直都是空格,所以根据你的表达式,表达式永远成立,最后得到的begin是14,end是13,而你的return s.substring(begin,end+1);这句,实际上是return s.substring(14,13+1);
public static String myTrim(String s)
{
int begin =0;
int end =s.length()-1;
char ch1= s.charAt(begin);
char ch2= s.charAt(end);
while(begin<=end &&ch1==' ')
{
begin++;
ch1= s.charAt(begin);
}
while(begin<=end &&ch2==' ')
{
end--;
ch2= s.charAt(end);
}
return s.substring(begin,end+1);
}
复制代码
作者:
黑马-刘昌文
时间:
2012-4-17 19:52
int start = 0,end = str.length()-1;
end 没有申明其类型!
int begin =0;
int end =s.length()-1;
char ch1= s.charAt(begin);
char ch2= s.charAt(end);
while(begin<=end &&ch1==' ')
begin++;
while(begin<=end &&ch2==' ')
end--;
return s.substring(begin,end+1);
ch1 和ch2值的表达式不是循环的条件,因此他们的值并不会随着 begin和end的变化而变化!
作者:
袁培育
时间:
2012-4-17 20:14
你的第一个mytrim方法里得ch1和ch2被赋值后就没有在改变,你的while循环没有改变ch1和ch2的值,所以begin会一直加,直到begin=end=s.length()-1,第二个while里的end会一直减,直到end=s.length()-2,所以最后你的begin=s.length()-1;end=s.length()-2;
这样到return语句时就出错了。
作者:
韩新凯
时间:
2012-4-17 21:18
在第一个myTrim(String s)方法中char ch1 = s.charAt(begin);char ch2 = s.charAt(end);没有在while()括号中,不参与循环。
在第二个myTrim(String str)方法中while (start <= end && str.charAt(start) == ' ');while (start <= end && str.charAt(end) == ' '),str.charAt(start) == ' '和str.charAt(end) == ' '都参与了循环,结果当然不一样了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2