0

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


        }       
    }   
4

3 回答 3

2

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

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

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


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

padlength = String.valueOf(numbers).length();
System.out.printf(String.format("\%0%dd " ,padlength),counter);
于 2013-01-18T02:21:30.377 回答
2

您可以在此处使用printfwhich uses Formatter进行填充:

System.out.printf("%02d ", counter);
于 2013-01-18T02:21:38.117 回答
0

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 上做这件事的更好方法吗?

于 2013-01-18T02:49:52.447 回答