黑马程序员技术交流社区

标题: 模拟string类的trim()方法,去除字符串首部空格和尾部 问题 [打印本页]

作者: 葛奎    时间: 2012-6-26 10:46
标题: 模拟string类的trim()方法,去除字符串首部空格和尾部 问题
本帖最后由 葛奎 于 2012-6-26 11:17 编辑

class StringTest2
{
    public static void main(String[] args)
    {
        String s="   qwrttcgx   ";
        trim(s);
    }
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
    public static void trim(String str)
    {
        String str1="";
        for(int i=0;i<str.length();i++)
        {
            if(str.charAt(i)==' ')
                str1=str.substring(i+1);
            else
                break;

        }
        String str2="";
        for(int i=str1.length()-1;i>=0;i--)
        {
            if(str1.charAt(i)==' ')
                str2=str1.substring(i);
            else
                break;
        }
        sop(str2);
    }
}//编译可以通过,但是输出的是空的内容是怎么回事?



作者: Forever。    时间: 2012-6-26 11:10
首先你的程序没有一点思路上的问题,问题就是出在不严谨。你的代码中没有写如果需要处理的字符串首位都没有空格的情况。其实很简单你一看就明白:

public class StringTest2
{
    public static void main(String[] args)
    {
        String s="qwrttcgx";
        trim(s);
    }
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
    public static void trim(String str)
    {
        String str1="";
        for(int i=0;i<str.length();i++)
        {
            if(str.charAt(i)==' ')
                str1=str.substring(i+1);
            else
                break;

        }
        String str2="";
        for(int i=str1.length()-1;i>=0;i--)
        {
            if(str1.charAt(i)==' ')
                str2=str1.substring(0,i);
            else
                break;
        }
        if(!str2.equals(""))
        {
                sop(str2);
        }
        else
        {
                sop(str);
        }
        
    }
}
作者: 葛奎    时间: 2012-6-26 11:14
"    jfadfjak   "就算写成这种形式,输出的内容也是空的  

作者: Forever。    时间: 2012-6-26 11:26
本帖最后由 Forever。 于 2012-6-26 11:28 编辑
葛奎 发表于 2012-6-26 11:14
"    jfadfjak   "就算写成这种形式,输出的内容也是空的

C:\Users\Administrator\Pictures\b09935cbd7035c3823b0e7e3b7518dd5.png
截图
我的程序运行是可以的你再试一次我写的代码,我下面加了判断

b09935cbd7035c3823b0e7e3b7518dd5.png (31.34 KB, 下载次数: 124)

截图

截图

作者: 陆强强    时间: 2012-6-26 11:57
本帖最后由 陆强强 于 2012-6-26 13:22 编辑

      substring(int x);是从x开始到末尾,所以str1.substring(i)=“”;改成str1.substring(0,i);就可以了


        for(int i=str1.length()-1;i>=0;i--)
        {
            if(str1.charAt(i)!=' '){
                str2=str1.substring(0,i+1);
                break;
                        }
        }
        sop(str2);
作者: 一路走来    时间: 2012-6-26 13:29
第一个循环语句没问题,第二个循环语句显然没有实现去空截字符的意思。String的substring(i)的意思是从i的位置开始截取字符串,if(str1.charAt(i)==' ')
                 str2=str1.substring(i);这个怎么截取都是空串,i不是截取的起点而是终点。




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