黑马程序员技术交流社区

标题: Trim去除前后空格问题(打印结果咋一样呢) [打印本页]

作者: 孙万利    时间: 2012-11-29 23:21
标题: Trim去除前后空格问题(打印结果咋一样呢)
1.模拟一个trim方法,去除字符串两端的空格
思路:
  1.判断字符串第一个位置是否是空格,如果是继续向下判断,知道不是空格为止
   结尾处判断空格也是如此
  2.当开始和结尾都判断到不是空格时,就要获取该字符串


class StringTest
{
public static void sop(String 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);
}
public static void main(String[] args)
{
  String s="          ab cd           ";
  sop("("+s+")");
  myTrim(s);
  sop("("+s+")");
  
}
}

TT截图未命名.jpg (8.27 KB, 下载次数: 18)

TT截图未命名.jpg

作者: 深井看海    时间: 2012-11-30 00:14
        public static void main(String[] args) {
                String s = "          ab cd           ";
                sop("(" + s + ")");
                myTrim(s);        //你这里已经实现去除了两端空格的功能
                sop("(" + s + ")");//可是你这里打印输出的还是原有的字符串
//                sop("(" + myTrim(s) + ")");//你可以直接打印输出
//                String ss = myTrim(s);//或是再定义一个新的字符串变量存储
//                sop("(" + ss + ")");//打印输出已经去除了空格的字符串
        }
作者: 冯盼    时间: 2012-11-30 02:18
将main方法中myTrim(s);改成s = myTrim(s);就可以了
作者: 黑_礼_服    时间: 2012-11-30 02:49
虽然把s变量值去除了两端空格 但是没有重新赋值输出
可以直接输出 sop("(" + myTrim(s) + ")"); 就可以了
或者 s= myTrim(s); sop("(" + s+ ")");
作者: 康乐    时间: 2012-11-30 07:47
本帖最后由 color 于 2012-11-30 10:30 编辑

在主函数中,你并没有把去除空格后的值赋值给s,导致你最后打印s的时候没有得到想要的结果。
要在主函数中myTrim(s);改成s = myTrim(s);
或者可以在最后输出的时候改变代码sop("("+myTrim(s)+")");

这是因为myTrim(s),你只是改变了函数内局部变量内的s,并将s返回。
而你最后的打印s,打印的却是,在最上边定义的main函数中定义的s.
局部变量,在myTrim(s)函数后,局部变量s就将被释放了。

你忽略了局部变量与全局变量的有效范围。




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