Java温度转换程序问题:如何实现两组转换结果并排输出?
温度转换作业:实现并排输出转换表
我被分配了一项温度转换作业,要求使用两个静态方法和单个System.out.print语句,将温度转换值并排打印。目前程序会先后输出两组循环的结果,无法实现预期的并排展示效果。当前代码能正常打印数值,但无法达成并排输出要求。
现有代码如下:
package main; public class TempConversion { static double cel; static double fah; public static void convCel(double cel) { String verticle; double temp; cel = -40; verticle = "|"; System.out.println("\tTemperature \n\t (degrees) "); System.out.print(" F \t\t C"); System.out.println(); for (cel = -40; cel <= 455; cel += 5) { if (cel <= 455) { System.out.printf("%7.3f ", cel); if (cel <= 455) { temp = (cel - 32) * 5 / 9; System.out.printf("\t %7.3f ", temp); System.out.print(verticle); } } System.out.println(); } } public static void convFah(double fah) { double temp; fah = -40; System.out.println("\tTemperature \n\t (degrees) "); System.out.print(" C \t\t F"); System.out.println(); for (fah = -40; fah <= 455; fah += 5) { if (fah <= 455) { System.out.printf("%7.3f ", fah); if (fah <= 455) { temp = (fah * 9 / 5) + 32; System.out.printf("\t %7.3f ", temp); } } System.out.println(); } } public static void main(String[] args) { System.out.print(" Temperature Conversion Table \n"); System.out.println(); convCel(cel); convFah(fah); } }
解决思路
要实现并排输出,核心是在一次循环中同时生成左右两栏的内容,而非分别调用方法输出整组数据。同时严格遵循作业要求:用两个静态方法负责温度转换计算,用单个打印语句输出每行内容。
修改后的代码
package main; public class TempConversion { // 静态方法:华氏度转摄氏度 public static double fahrenheitToCelsius(double fahrenheit) { return (fahrenheit - 32) * 5 / 9; } // 静态方法:摄氏度转华氏度 public static double celsiusToFahrenheit(double celsius) { return (celsius * 9 / 5) + 32; } public static void main(String[] args) { // 打印表头 System.out.println(" Temperature Conversion Table"); System.out.printf("%10s %10s | %10s %10s%n", "F", "C", "C", "F"); System.out.println("---------------------------------------------------"); // 一次循环生成并排的转换内容 for (double temp = -40; temp <= 455; temp += 5) { double cFromF = fahrenheitToCelsius(temp); double fFromC = celsiusToFahrenheit(temp); // 单个printf语句完成整行打印 System.out.printf("%10.3f %10.3f | %10.3f %10.3f%n", temp, cFromF, temp, fFromC); } } }
关键修改说明
- 拆分职责:将原方法中的打印和计算逻辑分离,两个静态方法仅负责温度转换计算,符合单一职责原则。
- 合并循环:在
main方法中用一次循环同时处理左右两栏的转换值,避免两次循环分别输出。 - 单语句打印:每行内容通过一个
System.out.printf完成输出,满足作业要求的单个打印语句限制。 - 格式化对齐:使用
%10.3f控制数值宽度和小数位数,确保表格对齐整齐,用|分隔左右两栏。
内容的提问来源于stack exchange,提问作者TheNomad
相关产品推荐
相关产品推荐

