随机产生了一个8位数的纯数字字符串,但是integer.parseInt()时会把最前面的0去掉了,所以想判断它前面有几个0,同时后面补同样位数的0,使得转换后的int型也是8位数的,这个逻辑怎么写。

解决方案 »

  1.   

    补0工作放到转型前完成
    推荐String类方法比如replacAll()
    ( ̄(工) ̄)
      

  2.   

    定义一个int型的变量count用来计算0的个数~
    用一个循环再在循环里面加上一个if判断一下字符串前面的0的个数~
    是0就继续循环并让count加1~不是就跳出循环~
    这样就能知道有多少个0了~
    之后再用integer.parseInt()把字符串转换~然后再补上0就好了~
      

  3.   

    public class Test {
    public static void main(String args[])
    {
    String s = "00001230";
    int i = trans(s);
    System.out.println(i);
    }

    public static int trans(String str){
    int a = Integer.parseInt(str);
    String ss = "";
    if(a != 0){
    ss = String.valueOf(a);
    int d = str.length() - ss.length();

    for(int i = 0; i < d; i++){
    ss = ss.concat("0");
    }

    return Integer.parseInt(ss);
    }

    return 0;
    }

    }
      

  4.   

    不用循环,这样写好看点哈
    String s = "0000123";
    System.out.println(s.length() - String.valueOf(Integer.parseInt(s)).length());
      

  5.   


    String reg = "^(0*)(\\d*)$";
    String num = "00123456";
    System.out.println(num.replaceAll(reg, "$2$1"));num = "00012345";
    System.out.println(num.replaceAll(reg, "$2$1"));num = "00000874";
    System.out.println(num.replaceAll(reg, "$2$1"));
      

  6.   

    自己写出来了.
    randomStr是前面产生的8位随机纯数字字符串。StringBuffer sb = new StringBuffer();
    for (int i = 0; i < 8; i++)
        {
           if(randomStr.startsWith("0"))
            {
                randomStr = randomStr.substring(1);
                sb.append('0');
            }
            else{break;}
         }
     int randomNumber = Integer.parseInt(sb.toString);
      

  7.   

    字符串长度 - 数字位数 = 0 的个数     String str = "000012345";
         int num = Integer.parseInt(str);
         int length = (int) Math.log10(num) + 1;
         System.out.println(str.length() - length);
    把前面的0以后面的话可以这样str = str.replaceAll("^([0]*)(\\d+)$", "$2$1");
      

  8.   

    str = str.replaceAll("^([0]*)(\\d+)$", "$2$1")中的$2$1是什么意思?
      

  9.   

    google到了:)
    $2  $1分别表示前面匹配的第一个括号和第二个括号即(\\d+)与([0]*)
      

  10.   

    正则很好阿..
    不过用计数也是可以判断的吧.int count=0;
    String s="00001234";
    for(int i=0;i<s.length();i++)
    {
        char ch=s.charAt(i);
        if(ch='0')
        {
            count++;//统计有多少个0
        }
        else
        {
            break; //遇到不是0的时候跳出循环
        }
    }在用Integer.parseInt(s);得到一个int值,再在后面添加count个0就好了
      

  11.   

    String s="00021023";
    int k=Integer.parseInt(s);
    String temp=k+"";
    int i=s.length()-temp.length();
    int m=(int)Math.pow(10,i)*k;
    System.out.println(m);
      

  12.   

    “所以想判断它前面有几个0,同时后面补同样位数的0,使得转换后的int型也是8位数的,”
    ——我怎么觉得楼主自己都把需要做的事情说得很清楚了,就差写程序了。