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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

     
    看老毕视频,看到了怎样自定义一个Trim方法,把收尾空格去掉,我的思路是这样:
    一个字符串进去,首先判断是否是空格开始,如果是,则把这个字符串转换成字符数组,然后再把该字符数组用另一个字符数组装起来,而在装的时候,把原来下标为1的字符装进该数组下标为0的位置,依次类推,然后再把这个数组转换成一个字符串。做一个循环判断,就得到了没有空格开头的字符串,同理,用endsWith函数判断最后一位是不是空格,然后转换成字符数组,再取少 一位,做个循环,直到最后一个空格没有,则输出字符串。下面是我的代码,但是实现不了,请大神帮个忙啊,在我的代码基础上改一下,或者根据我的思路帮我把代码实现了好么?
public class Trim
{
        public static void main(String[] args)
        {
                Trim1();
        }
        private static void Trim1()
        {
                String str="  34dlakj  ";
                int i=0;//这里定义一个变量,以便于后面记录循环次数
                while(str.startsWith(" ")==true)//判断第一个是不是空格,如果是空格,则循环
                {
                        char[] ch1=str.toCharArray();//将该字符串转换成字符数组
                        for(int a=1;a<ch1.length;a++)//下标为一开始往新的数组里面存
                        {
                                char[] ch2={ch[a]};//接收字符数组,不知道这里这样写对不对,我报错是在这报的,但是我又不知道这样接收哪不对了,请指出
                        }
                        String str2=new String(ch2);//将字字符数组转换成字符串
                }
                while(str2.endsWith(" ")==true)//判断字符串是否以空格结尾若是,则进入循环
                {
                        i++;//此操作判断是否已经执行一次操作
                        char[] ch3=str2.toCharArray();//将字符串转换成字符数组
                        for(int a=0;a<(ch3.length)-i;a++)//把该数组放入另一个字符数组,但是,长度较之前少
                        {
                                char[] ch4={ch[a]};
                        }
                        String str3=new String(ch4);
                }
                char[] ch5=str3.toCharArray();
                for(int x=0;x<str.length();x++)
                {
                        Show("该字符串为"+ch[x]);
                }
        }
        private static void Show(Object obj)
        {
                System.out.println(obj);
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
char[] ch2={ch[a]};//接收字符数组,不知道这里这样写对不对,我报错是在这报的,但是我又不知道这样接收哪不对了,请指出   ;  这里错了,,  你至少应该把Char[] ch2 ;  放到循环外面去吧,  如果你放里面,, 就每循环一次就新建一次,  
回复 使用道具 举报
    char[] ch2={ch[a]};//接收字符数组,不知道这里这样写对不对,我报错是在这报的,但是我又不知道这样接收哪不对了,请指出

上面 那句  ch1[a];
回复 使用道具 举报
姚玉鹏 发表于 2012-6-4 20:35
char[] ch2={ch[a]};//接收字符数组,不知道这里这样写对不对,我报错是在这报的,但是我又不知道这样 ...

这样写没有语法错误,   只是你写错了,,应该是ch1[a] ;  这样看你可能明白,  相当于 int [] a = {1,2,3,4} ;
回复 使用道具 举报
杜俊彪 发表于 2012-6-4 20:45
这样写没有语法错误,   只是你写错了,,应该是ch1[a] ;  这样看你可能明白,  相当于 int [] a = {1,2,3 ...

能不能帮我把这个程序修改了能运行?按照我这个思路是可以得到取消字符串收尾空格的结果的啊
回复 使用道具 举报
不用这么复杂吧
  1. @Test
  2. public void test02() {
  3.         String src = "  aslk 340 29@ #($ )_@) #   ";
  4.         char[] val = src.toCharArray();
  5.         int beginIndex = 0;
  6.         int len = val.length;
  7.         int endIndex = len - 1;
  8.         while(beginIndex < len && val[beginIndex] == ' '){
  9.                 beginIndex++;
  10.         }
  11.         while(endIndex > beginIndex && val[endIndex] == ' '){
  12.                 endIndex--;
  13.         }
  14.         System.out.println(src.substring(beginIndex, endIndex+1));
  15. }
复制代码
回复 使用道具 举报
张少威 发表于 2012-6-4 21:06
不用这么复杂吧

这个方法我知道哈,并且也实现了,这个就是老毕讲的那个,我写的那个代码是自己的思路,想把它实现而已
回复 使用道具 举报
黄捷 发表于 2012-6-4 21:12
这个方法我知道哈,并且也实现了,这个就是老毕讲的那个,我写的那个代码是自己的思路,想把它实现而已 ...

老毕讲的?肯定参考了API源码
回复 使用道具 举报
我换了一种写法,, 也是实现Trim;  用的是迭代;
  1. public class Trim
  2. {
  3.         static int count =0 ;
  4.         static int count1 = 0 ;
  5.         public static void main(String[] args)
  6.         {    String str="  34dlakj   ";
  7.                 re(str) ;
  8.                 re1(str) ;
  9.                 show(str.substring(count,str.length()-count1));
  10.         
  11.         }
  12.         private static void re1(String string) {
  13.                 String lString = null ;
  14.                 if(string.endsWith(" ")){
  15.                                 lString = string.substring(0,string.lastIndexOf((char)32)) ;
  16.                                 if(lString.endsWith(" ")) re1(lString) ;
  17.                                 
  18.                                 count1++ ;
  19.                         }
  20.                         
  21.                 }
  22.                 private static void re(String string) {
  23.                 String kString = null ;
  24.                
  25.                         if(string.startsWith(" ")){
  26.                                 kString= string.substring(1) ;
  27.                                 if(kString.startsWith(" ")){
  28.                                 
  29.                                         re(kString) ;
  30.                                 }
  31.                                 count++ ;
  32.                         }
  33.                 }
  34.         static void show(Object obj)
  35.         {
  36.                 System.out.println(obj);
  37.         }
  38. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

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