A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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, 下载次数: 24)

TT截图未命名.jpg

评分

参与人数 1技术分 +1 收起 理由
杨千里 + 1

查看全部评分

4 个回复

倒序浏览
        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 + ")");//打印输出已经去除了空格的字符串
        }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
将main方法中myTrim(s);改成s = myTrim(s);就可以了
回复 使用道具 举报
虽然把s变量值去除了两端空格 但是没有重新赋值输出
可以直接输出 sop("(" + myTrim(s) + ")"); 就可以了
或者 s= myTrim(s); sop("(" + s+ ")");
回复 使用道具 举报
本帖最后由 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就将被释放了。

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

评分

参与人数 1技术分 +1 收起 理由
杨千里 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马