【问题标题】:How to make single digit integer into two digits [duplicate]如何将一位整数变成两位数[重复]
【发布时间】:2018-03-22 23:16:58
【问题描述】:

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

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

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

【问题讨论】:

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

标签: java time format printf


【解决方案1】:

我真的怀疑该代码是否打印“10:9”。相反,它可能只打印First time: 10

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

public PrintStream printf(String format, Object... args)

它需要一个格式化字符串,然后是任意数量的Objects 作为参数,用于转换该格式化字符串。只要找到像%d 这样的标识符,就会按顺序使用args。因此,与其混合格式字符串和参数,不如编写一个长格式字符串,然后按照参数在format 中出现的顺序列出参数。

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

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 1970-01-01
    • 2011-09-17
    • 2020-05-25
    • 2011-09-09
    • 1970-01-01
    • 2012-10-12
    • 2013-09-04
    • 2020-12-28
    相关资源
    最近更新 更多