相对于输入数字动态添加前导零

时间:2013-01-18 02:13:30

标签: java

  

可能重复:
  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++;
                }


        }       
    }   

3 个答案:

答案 0 :(得分:2)

您应该使用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);

答案 1 :(得分:2)

您可以在{}使用printf System.out.printf("%02d ", counter); 进行填充:

{{1}}

答案 2 :(得分:0)

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

  

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

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