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的输出[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中将秒转换为天、小时、分钟和秒 [关闭]

单片机课设-电子时钟设计(仿真图代码全)

使用 VBA 将十进制数转换为分钟和秒

第六章第二十五题(将毫秒数转换成小时数分钟数和秒数)(Convert milliseconds to hours, minutes, and seconds) - 编程练习题答案

第六章第二十五题(将毫秒数转换成小时数分钟数和秒数)(Convert milliseconds to hours, minutes, and seconds) - 编程练习题答案

在 Excel 中将时间格式化为天、小时、分钟和秒的更好方法?