You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:16:17