Java 如何将一位数整数转换为两位数

Java 如何将一位数整数转换为两位数,java,time,format,printf,Java,Time,Format,Printf,我正试图用Java编写一个程序来比较时间并按顺序显示它们。一切都正常,除了一个事实,例如,如果有人输入10表示小时,输入9表示分钟,则打印为“10:9” 我希望在打印时,每个单个数字前面都有一个0。h变量代表小时,m变量代表分钟 System.out.printf("First time: %02d" , h1 , ":%02d" , m1 , "\nSecond time: %02d" , h2 , ":%02d" , m2); 我真的很怀疑那个代码是否在打印“10:9”。它很可能只会第一次

我正试图用Java编写一个程序来比较时间并按顺序显示它们。一切都正常,除了一个事实,例如,如果有人输入10表示小时,输入9表示分钟,则打印为“10:9”

我希望在打印时,每个单个数字前面都有一个0。h变量代表小时,m变量代表分钟

System.out.printf("First time: %02d" , h1 , ":%02d" , m1 , "\nSecond time: %02d" , h2 , ":%02d" , m2);

我真的很怀疑那个代码是否在打印“10:9”。它很可能只会第一次打印
:10

格式字符串看起来不错,但调用
System.out.printf
的方式不太正确
java.io.PrintStream.printf
具有以下签名:

public PrintStream printf(String format, Object... args)
它需要一个格式化字符串,然后是任意数量的
对象
作为参数,用于转换该格式化字符串<每当发现标识符时,如
%d
,都会按顺序使用code>args。因此,与其将格式化字符串和参数混合在一起,不如编写一个长的格式化字符串,然后按参数在
格式中的显示顺序列出参数

System.out.printf("First time: %02d:%02d\nSecond time: %02d%02d", h1, m1, h2, m2);

如果这些是一天中的时间,请使用java.time(现代java日期和时间API)中的
LocalTime
类。它的
toString
方法生成一个类似
10:09
的字符串(假定它的秒数为0,我认为在您的情况下它们将是0)。如果时间是时间量或持续时间,请使用
Duration
类,但保留自己的格式逻辑。