我需要帮助使用 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
我创建了一个方法,该方法采用时间参数,将其转换为秒,并通过将其除以一天中的秒数来打印其 "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