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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 葛奎 于 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);
    }
}//编译可以通过,但是输出的是空的内容是怎么回事?


评分

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

查看全部评分

5 个回复

倒序浏览
首先你的程序没有一点思路上的问题,问题就是出在不严谨。你的代码中没有写如果需要处理的字符串首位都没有空格的情况。其实很简单你一看就明白:

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);
        }
        
    }
}
回复 使用道具 举报
"    jfadfjak   "就算写成这种形式,输出的内容也是空的  
回复 使用道具 举报
本帖最后由 Forever。 于 2012-6-26 11:28 编辑
葛奎 发表于 2012-6-26 11:14
"    jfadfjak   "就算写成这种形式,输出的内容也是空的

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

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

截图

截图

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 陆强强 于 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);
回复 使用道具 举报
第一个循环语句没问题,第二个循环语句显然没有实现去空截字符的意思。String的substring(i)的意思是从i的位置开始截取字符串,if(str1.charAt(i)==' ')
                 str2=str1.substring(i);这个怎么截取都是空串,i不是截取的起点而是终点。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马