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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0和1,编程世界 中级黑马   /  2013-9-25 13:38  /  1663 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-25 20:23 编辑

怎样将一个小于或者等于4位数的整数变成一个字符串0000  如 2变成 0002     12变成  0012  9998就保持9998:我写了一半,卡住 了。

public class StringBufferSubString {

public String getString(int i){
  StringBuffer sb = new StringBuffer();
  sb.append("0000");
  sb.append(i);
  return sb.toString().  //我不知道怎么从后面开始截,你无论传什么进来我只从后面开始截4个就满足要求了,但是我想不到怎么截了。
}

public static void main(String[] args) {
  
}

}
各位大侠帮忙解决一下,谢谢!

评分

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

查看全部评分

8 个回复

倒序浏览
string类有两个方法叫padleft,padright,有两个参数,一个是设定的字符串长度,一个是设定用来补充的字符。
回复 使用道具 举报
本帖最后由 落木萧萧 于 2013-9-25 13:59 编辑
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 String s = getString(800);
  4.                 System.out.println(s);
  5.         }

  6.         private static String getString(int i) {
  7.                 String s = String.valueOf(i);
  8.                 if(s.length() == 3){
  9.                         s = "0".concat(s);
  10.                 }
  11.                 return s;
  12.         }
  13. }
复制代码
贴上一段代码,不完整而且写得很烂,但可以给个思路。
就是先将整数转为字符串,然后判断长度,最后在字符串前面进行拼接。
刚才没看明白LZ的意思,贴上新的代码。
  1. public class Test {

  2.         public static String getString(int i) {
  3.                 StringBuffer sb = new StringBuffer();
  4.                 sb.append("0000");
  5.                 sb.append(i);
  6.                 return sb.toString().substring(sb.length() - 4, sb.length());
  7.         }

  8.         public static void main(String[] args) {
  9.                 String s = getString(800);
  10.                 System.out.println(s);
  11.         }
  12. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 很给力!鼓励一个

查看全部评分

回复 使用道具 举报
本帖最后由 肖亚光 于 2013-9-25 14:03 编辑
  1.         public static String getString(int i){
  2.                 String srcString = ""+i;
  3.                 while(srcString.length()<4){
  4.                         srcString = "0"+srcString;
  5.                 }
  6.                 return srcString;
  7.         }



  8. 如果是需要最后的4个字符,只要返回
  9. return srcString.substring(srcString.length()-4, srcString.length());
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 继续加油!

查看全部评分

回复 使用道具 举报
本帖最后由 暮雨 于 2013-9-25 14:14 编辑

随手写了一个,希望能帮到你。
  1. public class Test1{
  2.         
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(getString(2));
  6.         }

  7.         public static String getString(int i){
  8.           StringBuffer sb = new StringBuffer();
  9.           sb.append("0000");
  10.           sb.append(i);
  11.           String str = sb.toString();
  12.           str = str.substring(str.length()-4,str.length());
  13.           return str;
  14.         }
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 很给力!

查看全部评分

回复 使用道具 举报
楼主说的就是一个取字串的问题,请看下面代码,刚刚敲的--->

public class StringBufferSubString {
        public static void main(String[] args) {
                System.out.println(getString(1));
                System.out.println(getString(12));
                System.out.println(getString(123));
                System.out.println(getString(1234));
                System.out.println(getString(12345));
        }

        public static String getString(int i) {
                StringBuffer sb = new StringBuffer();
                sb.append("0000");
                sb.append(i);
                return sb.substring(sb.length()-4, sb.length()); // 我不知道怎么从后面开始截,你无论传什么进来我只从后面开始截4个就满足要求了,但是我想不到怎么截了。
        }
}
}

运行结果--->
0001
0012
0123
1234
2345

希望可以帮到楼主...

The you smile until forever .....................

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 赞一个!有心了

查看全部评分

回复 使用道具 举报
本帖最后由 早知道 于 2013-9-25 15:15 编辑

我觉得可以很容易实现,推荐看下毕老师关于正则表达式的视频。

  1. <P>  String str = "9993";
  2.   str = str.replaceAll("(<A href="file://\\d">\\d</A>+)", "000$$$$1");
  3.   str = str.replaceAll("0*(<A href="file://\\d{4">\\d{4</A>})", "$$$$1");
  4.   System.out.println(str);</P>
复制代码
这样就可以实现了,正则用来操作你这个需求正合适。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 给力的解答!代码短小精悍!

查看全部评分

回复 使用道具 举报
依旧 中级黑马 2013-9-25 15:13:11
8#
使用的正则,希望能帮到你。
public class RegAdd {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
   System.out.println(Add("2"));
   System.out.println(Add("98"));
   System.out.println(Add("789"));
   System.out.println(Add("1234"));
}
//使用正则完成的,貌似还可以优化
public static String Add(String str){
  if(str.length()==1){
   str=str.replaceAll("(\\d+)", "000$1");//如果字符串长度为1则补三个零
  }else if(str.length()==2){
   str=str.replaceAll("(\\d+)", "00$1");//如果字符串长度为2则补二个零
  }else if(str.length()==3){
   str=str.replaceAll("(\\d+)", "0$1");//如果字符串长度为3则补一个零
  }else{
   return str;                         //否则直接返回字符串
  }
  return str;
}
}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 一个比一个厉害!技术分,你值得拥有!.

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题分类为“已解决”。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马