如何在java中创建华氏温度到摄氏温度的转换

时间:2017-04-02 01:07:54

标签: java if-statement while-loop do-loops

代码应该输出 华氏度和摄氏度的表

public static void main(String[] args) {
    System.out.println("Fahrenheit\tCelsius");
    System.out.println("=======================");
     for(int temp = -45; temp <= 120; temp += 5) //for(int i = 0; i <= 100; i+= 10)
        {
            System.out.printf("%5d       |", temp);
            double sum = (temp + (9.0/5.0)) * 32;   
            System.out.printf("%5d", (int) sum );
            System.out.println();
        }
}  

4 个答案:

答案 0 :(得分:1)

您需要进行两项更改:

  • 删除强制转换为int(因为它会使值失去精确度)
  • 使用&#34; .1f&#34;在printf中(因为你需要打印十进制数而不是int)

下面应该有效:

System.out.printf("%10.1f", sum );

答案 1 :(得分:1)

  

如何在java中创建华氏温度到摄氏温度的转换

恕我直言最重要的一步是在考虑编码之前先了解问题。

维基百科是一个很好的开始并且正在搜索它给我们的摄氏度:

  

[°C] =([°F] - 32)×5/9

在Java中可能是这样的:

celsius = (fahrenheit -32.0) * 5.0 / 9.0;

我认为最好在一个单独的方法中这样做,以便更容易测试它:

public static double fahrenheitToCelsius(double fahrenheit) {
    double celsius = (fahrenheit - 32.0) * 5.0 / 9.0;
    return celsius;
}

注1:在继续之前测试此方法是值得的 - 两个显着的温度是:

  • 32°F == 0°C(冰的熔点)
  • 212°F == 100°C(水的沸点)

所以快点做一些事情&amp;脏得像:

System.out.println("32 == " + fahrenheitToCelsius(32));
System.out.println("212 == " + fahrenheitToCelsius(212));

更好,在这个简单的情况下可能有点重,就是使用像JUnit这样的框架。

注2:为了创建表格,请按照问题中的帖子进行操作,但只有一个printf可以将格式放在一个地方(显然是在调用上述方法后):

System.out.printf("%5.0f | %5.1f\n", fahrenheit, celsius);

注3:谨慎使用5/9 - 在Java中被解释为整数除法并且会导致零!

(上面的代码只是一个示例,未经过测试或调试

答案 2 :(得分:0)

更好的方法是使用小数格式类

import java.text.DecimalFormat;

int numberToPrint = 10.234;
DecimalFormat threePlaces = new DecimalFormat("##.#");  //formats to 1 decimal place
System.out.println(threePlaces.format(numberToPrint));

应打印:

10.2

答案 3 :(得分:0)

如果要使输出结果看起来像表,则必须使用java.util.Formatter

我重写了你的片段,一点点:

public static void main(String[] args) {
    Formatter formatter = new Formatter(System.out);

    formatter.format("%-20s\n",      "---------------------------");
    formatter.format("%-10s %12s\n", "| Fahrenheit |", "Celsius |");
    formatter.format("%-20s\n",      "---------------------------");

    for (int farValue = -45; farValue <= 80; farValue += 5) {
        double celValue = (farValue + (9.0 / 5.0)) * 32;

        formatter.format("| %10d | %10.0f |\n", farValue, celValue);
    }
    formatter.format("%-20s\n", "---------------------------");
}

输出代码段看起来与 表格 完全相同:

---------------------------
| Fahrenheit |    Celsius |
---------------------------
|        -45 |      -1382 |
|        -40 |      -1222 |
 ...
|        -30 |       -902 |
---------------------------