相对于输入数字动态添加前导零[重复]

Posted

技术标签:

【中文标题】相对于输入数字动态添加前导零[重复]【英文标题】:add leading zeros dynamically relative to input number [duplicate] 【发布时间】:2013-01-01 17:18:11 【问题描述】:

可能重复:Left padding integers with zeros in Java

我需要根据输入数字长度动态添加一些前导零,例如,如果我输入 10,它将输出

数字 01 02 03 04 05 06 07 08 09 10

我认为这样做的方法是获取输入数字的长度,然后使用某种格式将该值应用于计数器,只是不确定最好的方法。

这是我到目前为止所拥有的......(我对编程很陌生)

    public static void main(String[] args) 
    int numbers;
    int counter = 1;
    int padlength;

    Scanner ngrabber = new Scanner(System.in);
    System.out.println("Please enter numbers to output number");
    numbers = ngrabber.nextInt();


                System.out.println("Numbers");
                while (counter <= numbers)          
                
                    padlength = String.valueOf(numbers).length();
                    System.out.println(counter);
                    counter++;
                


               
       

【问题讨论】:

你应该试试 printf 风格的函数 谷歌:“java 零填充”给你即时答案 【参考方案1】:

您应该使用 Java 的 printf 样式函数,如图所示 here

System.out.printf("%02d ",counter);

除非我不清楚语法,否则2 将确保打印数字的长度最小为 2,如果输入数字的长度,0 表示用0 填充小于 2。


编辑:要动态更改数字,试试这个。

padlength = String.valueOf(numbers).length();
System.out.printf(String.format("\%0%dd " ,padlength),counter);

【讨论】:

是的,部分有效,但“%02d”需要动态相对于输入数字长度 @user1985625 这就是填充的意思,试试看.. 如果您的意思是您需要动态支持 3 位数字等,您可以生成您传递的字符串.. 是的,这就是我想要做的,只是不确定语法 @user1985625 试试我的编辑,不确定它是否完美无缺,但你应该能够掌握这个想法【参考方案2】:

您可以在此处使用printf,它使用Formatter 进行填充:

System.out.printf("%02d ", counter);

【讨论】:

【参考方案3】:

printf 是 Java 的正确答案。 如果你发现自己需要在脑死亡的环境中这样做 (例如,Windows 命令脚本,也称为批处理文件),这是一种方法:

将你的上限数字转换为字符串;例如,10 –> “10” 获取该字符串的长度:strlen("10") = 2 将那么多零字符 (0) 附加到一个字符 (1):strcat("1","0","0") = "100" 将该字符串转换为数字:“100”–> 100 对于要格式化的每个数字:添加上述数字 (1 + 100 = 101),转换为字符串 (101 –> "101"),并去掉第一个字符 ("101" –> "01") .

是的,这是一个杂牌。有人知道在 Windows 上更好的方法吗?

【讨论】:

以上是关于相对于输入数字动态添加前导零[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在JavaScript中用前导零填充数字[重复]

PHP在单个数字之前添加前导零,即时[重复]

添加前导零 Python [重复]

填充数字格式的时间表达式,具有带前导零的可变分隔符

如何将前导数字标识符(不一定为零)添加到 r 中的字符串

从Javascript中的数字中删除前导零[重复]