String A="00000",该字符串需要累加,每次加一。第一个为:00000,第二个为:00001,第三个为:00002……最后一个为ZZZZZ。也就是说该字符串为数字与字母的组合,其中的五位都是从0到z递增,每次加一,请问如何实现?谢谢!

解决方案 »

  1.   

    public static String getId(int n) {
    String sn = String.valueOf(n);
    int len = 3 - sn.length();
    if (len > 0) {
    for (int i = 0; i < len; i++) {
    sn = "0".concat(sn);
    }
    }
    return sn;
    }用的时候传一个递加的数字就行了
    这个方法比较笨一点,应该还有更好的办法
      

  2.   

    你是想要递加过程中生成的所有字符串吧?
    你可以转化成整形递加:0,1,2,3……最后再进行格式化,不够五位的前面补零
    给你个格式化的函数public class NumberUtil{
     public static String formatNumInteger(int num, int unit) {
            String zero = "";
            if (unit == 0) {
                zero = "0";
            } else {
                zero = "";
            }
            for (int i = 0; i < unit; i++) {
                zero += "0";
            }
            DecimalFormat df = new DecimalFormat(zero);
            return df.format(num);
        }
    }
      

  3.   

    题目没有说清楚,我不知道你到底是说ASCII码还是说字母
      

  4.   

    都是字母,我是想从String A="00000"累加到String B="ZZZZZ",每次加一,想达到如下效果:
    00000
    00001
    00002
    .
    .
    .
    0000A
    .
    .
    .
    0000Z
    .
    .
    .
    00010
    .
    .
    .
    0001Z
    .
    .
    .
    ZZZZY
    ZZZZZ
      

  5.   

    public class Accumulate {

    public static void main(String[] args) {
    String s = "00000";
    StringBuilder sb = new StringBuilder();
    char[] cArr = s.toCharArray();
    for(int i = cArr.length -1  ;i>=0; i--) {
    char c = cArr[i];
    for(int j = 1; ; j++) {
    c += j;
    if(String.valueOf(c).codePointAt(0) == 122) {
    sb.append(c);
    break;
    }
    }
    }
    System.out.println(sb.toString());
    }
    }
    不知道这样是否是楼主的意思?
      

  6.   

    8楼的兄弟,你的程序只得出了最后的结果ZZZZZ,我是想要把他们全部打印出来(从00000到ZZZZZ的字符串)。
      

  7.   

    答:参考代码:
    public class StringAdd {
    // 对串d按36进制加1,返回新串
    public static String inc(String d)
    {
    return inc(d.toCharArray(),d.length()-1);
    }

      private static String inc(char[] d,int pos)
    {
    for(int i=pos;i>=0;i--)
    {
    d[i]=next(d[i]);//加1
    if(d[i]!='0') break;  //若没有进位,则立即结束。
    }
    return new String(d);
    }//返回36进制数字c的下一个数字
    private static char next(char c)
    {
      if(c=='9') return 'A';
      if(c=='Z') return '0';
      return (char)(c+1);
    }public static void main(String[] args) {
    // TODO 自动生成方法存根
        System.out.println("000ZZ的下一个数串是:"+inc("000ZZ"));
    }
    }
    程序运行结果:
    000ZZ的下一个数串是:00100
      

  8.   

    答:打印所有的//打印所有的:
        String s="00000";
        System.out.println(s);
        while( !s.equals("ZZZZZ"))
        {
         s=inc(s);
         System.out.println(s);
        }
      

  9.   

    答:程序运行结果:
    000ZZ的下一个数串是:00100
    00000
    00001
    00002
    00003
    00004
    00005
    00006
    00007
    00008
    00009
    0000A
    0000B
    0000C

    ZZZZY
    ZZZZZ
      

  10.   

    问个新手问题;字符串不是不能改变的吗?如果设置静态的字符串变量,重新赋值会是什么个状况?
    如:static String s="ssdie";

    s="dedsfa";
    结果是什么?
      

  11.   

    测试过,没有问题public class StrUtil{

    static byte s[] = {'0', '0', '0', '0'};


    private static String next()
    {
    int index = 3;
    while ((s[index] = inc(s[index])) == '0') index --;

    return new String(s);
    }

    private static byte inc(byte b)
    {
    if (b == '9') return 'A';

    if (b == 'Z') return '0';

    return ++ b;
    } public static void main(String []args) throws UnsupportedEncodingException
    {
    for (int i = 0; i < 10000; i++)
    {
    System.out.println(next());
    }
    }
    }