我需要帮助使用 printf 将方法的结果放入 table 格式

I need help using printf to put the result from a method into a table format

我创建了一个方法,该方法采用时间参数,将其转换为秒,并通过将其除以一天中的秒数来打印其 "fraction"。 我需要使用 printf 将其变成 table,但我不知道如何取该方法给我的分数并将其放入 table。当我完成后,程序应该打印这个:

这是我目前得到的代码:

public class FractionOfDay {

静态双压裂 = 0; static double timeSecs = 0;

public static void fractionOfDay( int hour, int minute, int second, char half) {

    if (hour == 12 && minute == 0 && second == 0 && half == 'A') {
  frac = 0.0000;
  System.out.print(frac);

}

    else if (half == 'A') {
      timeSecs = ((hour * 360) + (minute * 60) + second);
      frac = (timeSecs / 86400);
      System.out.print(frac);

}
else if (half == 'P') {
 timeSecs = ((hour * 3600) + (minute * 60) + second + (12 * 3600));
 frac = (timeSecs / 86400);
System.out.print(frac);

}

}

public static void main (String [] args) {
    fractionOfDay(12, 0, 0, 'A');
}

}

这样做就可以了:

public static void fractionOfDay( int hour, int minute, int second, char half) {
    int timeSecs = (half == 'P' ? 43200 : 0) + (hour % 12) * 3600 + minute * 60 + second;
    System.out.printf("%7d:%02d %sM       %.4f%n", hour, minute, half, timeSecs / 86400.0);
}

请注意,timeSecs 公式已修复以考虑第 12 小时,并且不会使用不正确的 360 乘数。

测试

System.out.println("      Time          Fraction Since Midnight");
for (int i = 0; i < 24; i++)
    fractionOfDay((i + 11) % 12 + 1, 0, 0, (i < 12 ? 'A' : 'P'));

第一次调用是 fractionOfDay(12, 0, 0, 'A'),最后一次调用是 fractionOfDay(11, 0, 0, 'P')

输出

      Time          Fraction Since Midnight
     12:00 AM       0.0000
      1:00 AM       0.0417
      2:00 AM       0.0833
      3:00 AM       0.1250
      4:00 AM       0.1667
      5:00 AM       0.2083
      6:00 AM       0.2500
      7:00 AM       0.2917
      8:00 AM       0.3333
      9:00 AM       0.3750
     10:00 AM       0.4167
     11:00 AM       0.4583
     12:00 PM       0.5000
      1:00 PM       0.5417
      2:00 PM       0.5833
      3:00 PM       0.6250
      4:00 PM       0.6667
      5:00 PM       0.7083
      6:00 PM       0.7500
      7:00 PM       0.7917
      8:00 PM       0.8333
      9:00 PM       0.8750
     10:00 PM       0.9167
     11:00 PM       0.9583