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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 耿渊博 中级黑马   /  2014-3-27 11:39  /  1131 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 耿渊博 于 2014-3-31 10:16 编辑

看看下面代码怎么打出来的不是老正确啊
  1. package com.Thread;

  2. public class StringTest1 {

  3.         public static void sop(String str){
  4.                 System.out.println(str);
  5.         }
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 String s = "     abc def      ";
  9.                 sop("("+s+")");
  10.                 s = myTrim(s);
  11.                 sop("("+s+")");
  12.                

  13.         }
  14.         
  15.         //去除字符串两边的空格
  16.         public static String myTrim(String str){
  17.                 int start = 0,end = str.length()-1;
  18.                
  19.                 while(start<end && str.charAt(start) == ' ')
  20.                         start++;
  21.                 while(start<end && str.charAt(end) == ' ')
  22.                         end--;
  23.                 return str.substring(start,end);
  24.         }

  25. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
return str.substring(start,end+1)
因为subString 取的是不包含尾的, 要end+1 多一位。
回复 使用道具 举报
本帖最后由 追逐 于 2014-3-27 11:54 编辑
  1. /*
  2. 1.模拟一个trim方法,去除字符串两端的空格。
  3.         思路:
  4.         1,判断字符串第一个位置是否是空格,如果继续向下判断,知道不是空格为止。
  5.                 结尾处判断空格也是如此。
  6.         2,当开始和结尾都判断到不是空格时,就是要获取的字符串
  7. */

  8. class MyTrim
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 String s = "   aaa   ddd   ";
  13.                 String s1 = MyTrim.myTrim(s);
  14.                 System.out.println(s); //去掉空格前
  15.                 System.out.println(s1); //去掉空格后
  16.         }

  17.         //写一个属于我的去掉空格的函数myTrim
  18.         public static String myTrim(String str)
  19.         {
  20.                 int start = 0, end = str.length() - 1; //定义前后角标的值
  21.                 while(start <= end && str.charAt(start) == ' ') //charAt就是获取字符串一个start位置上的字符
  22.                         start++;
  23.                 while(start <= end && str.charAt(end) == ' ')
  24.                         end--;
  25.                 //调用substring函数获取角标值start到end+1的字符。因为这个获取方式包含头不包含尾。所以让end+1
  26.                 return str.substring(start, end + 1);  //因为其是取头不取尾。所以在这里加上一个一就可以了
  27.         }

  28. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 青木郎 于 2014-3-27 12:31 编辑

不知道你为什么要自己写,好吧,既然你写了就说说,myTrim()
public static String myTrim(String str)
{
          return str.trim();
}
String有专门的方法进行处理,
trim
public String trim()返回字符串的副本,忽略前导空白和尾部空白至于你的代码
substringpublic String substring(int beginIndex,                        int endIndex)返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
改后class Test2 {
        public static void sop(String str){                System.out.println(str);        }        public static void main(String[] args) {                // TODO Auto-generated method stub                String s = "     abc def      ";                sop("("+s+")");                s = myTrim(s);                sop("("+s+")");               
        }                //去除字符串两边的空格        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);        }
}细心点啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马