如何在 java 中创建华氏度到摄氏度的转换
How to create a conversion of Fahrenheit to Celsius in java
对于华氏度和摄氏度,代码应该输出 a table:
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();
}
}
您需要进行两项更改:
- 移除转换为
int
(因为它会使值失去精度)
- 在
printf
中使用“.1f”(因为您需要打印十进制数而不是整数)
下面应该有效:
System.out.printf("%10.1f", sum );
更好的方法是使用小数格式 class
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
如果你想让输出结果看起来像table,你必须使用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", "---------------------------");
}
输出片段看起来完全像 a table:
---------------------------
| Fahrenheit | Celsius |
---------------------------
| -45 | -1382 |
| -40 | -1222 |
...
| -30 | -902 |
---------------------------
How to create a conversion of Fahrenheit to Celsius in java
恕我直言,最重要的一步是在考虑编码之前了解问题。
维基百科是一个好的开始,搜索 Celsius 它给我们:
[°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(水的沸点)
所以只要做一些快速而肮脏的事情,比如:
System.out.println("32 == " + fahrenheitToCelsius(32));
System.out.println("212 == " + fahrenheitToCelsius(212));
更好,在这种简单的情况下可能有点重,是使用像 JUnit 这样的框架。
注意 2:要创建 table,请按照问题中的说明进行操作,但只有一个 printf
可以利用将格式集中在一个地方的优势(显然是在调用上述方法之后):
System.out.printf("%5.0f | %5.1f\n", fahrenheit, celsius);
注意 3:注意 5/9
- 在 Java 中被解释为整数除法,结果为零!
(以上代码只是示例,未经测试或调试
对于华氏度和摄氏度,代码应该输出 a table:
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();
}
}
您需要进行两项更改:
- 移除转换为
int
(因为它会使值失去精度) - 在
printf
中使用“.1f”(因为您需要打印十进制数而不是整数)
下面应该有效:
System.out.printf("%10.1f", sum );
更好的方法是使用小数格式 class
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
如果你想让输出结果看起来像table,你必须使用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", "---------------------------");
}
输出片段看起来完全像 a table:
---------------------------
| Fahrenheit | Celsius |
---------------------------
| -45 | -1382 |
| -40 | -1222 |
...
| -30 | -902 |
---------------------------
How to create a conversion of Fahrenheit to Celsius in java
恕我直言,最重要的一步是在考虑编码之前了解问题。
维基百科是一个好的开始,搜索 Celsius 它给我们:
[°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(水的沸点)
所以只要做一些快速而肮脏的事情,比如:
System.out.println("32 == " + fahrenheitToCelsius(32));
System.out.println("212 == " + fahrenheitToCelsius(212));
更好,在这种简单的情况下可能有点重,是使用像 JUnit 这样的框架。
注意 2:要创建 table,请按照问题中的说明进行操作,但只有一个 printf
可以利用将格式集中在一个地方的优势(显然是在调用上述方法之后):
System.out.printf("%5.0f | %5.1f\n", fahrenheit, celsius);
注意 3:注意 5/9
- 在 Java 中被解释为整数除法,结果为零!
(以上代码只是示例,未经测试或调试