Java时钟项目-Tick方法在分钟和秒内输出“0”而不是“00”,修复AM PM的输出[重复]
Posted
技术标签:
【中文标题】Java时钟项目-Tick方法在分钟和秒内输出“0”而不是“00”,修复AM PM的输出[重复]【英文标题】:Java clock project - Tick method outputting "0" instead of "00" for minutes and seconds, fix output for AM PM [duplicate] 【发布时间】:2019-05-01 19:47:07 【问题描述】:已解决:我目前正在做一个项目来创建一个时钟,当调用方法 tick 时,时钟将增加 1 秒。还有其他问题,但现在当我将组件列为“00”时,我无法弄清楚为什么我的输出是“时钟终于读取:12:0:0”。它的读数应该是 12:00:00。此外,如果小时为 1,它也应该输出“01”。
更新:错误已修复。但是,我还需要实现它,以便显示它是 AM 还是 PM。现在,它现在将其作为示例返回 (12:00:00false),而不是从布尔值中写入 AM 或 PM。我怎样才能解决这个问题? 我的打勾方法是:
public void tick()
this.seconds++;
if (this.seconds == 60)
this.seconds = 00;
this.minutes++;
if (this.minutes == 60)
this.hours++;
this.minutes = 00;
if(this.seconds == 60)
this.minutes++;
this.seconds = 00;
if(this.minutes == 60)
this.hours++;
this.minutes = 00;
if(this.hours == 13)
this.hours = 1;
this.morning = false;
if (this.morning)
AMPM = "AM";
else
AMPM = "PM";
而我的返回方式是:
@Override
public String toString()
return String.format("%1d:%02d:%02d%2s", hours, minutes, seconds, morning);
我做错了什么?
【问题讨论】:
在 Java 中0
前缀数字字面量表示为八进制(并且去除了额外的前导零)。在您的代码中00
= 0
所以不要使用00
。
您正在输出 morning
,这是一个布尔值,而不是 AMPM
变量。
【参考方案1】:
试试String.format
的方法:
@Override
public String toString()
return (String.format("%02d:%02d:%02d", hours, minutes, seconds));
【讨论】:
太棒了,谢谢!以上是关于Java时钟项目-Tick方法在分钟和秒内输出“0”而不是“00”,修复AM PM的输出[重复]的主要内容,如果未能解决你的问题,请参考以下文章
第六章第二十五题(将毫秒数转换成小时数分钟数和秒数)(Convert milliseconds to hours, minutes, and seconds) - 编程练习题答案
第六章第二十五题(将毫秒数转换成小时数分钟数和秒数)(Convert milliseconds to hours, minutes, and seconds) - 编程练习题答案