我正在尝试编写一个程序,将以华氏度表示的温度转换为摄氏度。用户输入华氏度值,程序将打印出摄氏度值。用户应该输入212作为华氏度值,程序应该计算100.0作为摄氏值,但是当我想得到100.0时,我得到0.0作为摄氏值
我不确定问题出在哪里。是否可能是运营秩序?
将摄氏温度转换为华氏温度的公式为:C = 5 / 9 (F - 32)
import acm.program.*;
public class FahrenheitToCelsius extends ConsoleProgram {
public void run() {
println("This program converts Fahrenheit to Celsius");
int fah = readInt("Enter Fahrenheit temperature: ");
double ft = 5 / 9;
double cel = ft * (fah - 32);
println("Celsius equivalent = " + cel);
}
}
答案 0 :(得分:4)
5 / 9
是整数除法,因此即使您将其分配给0
,它也会返回double
。
试试5.0 / 9
。
答案 1 :(得分:2)
double ft = 5 / 9 ;
上述行不符合您的想法
因为5
和9
都是整数,所以它会进行整数除法。
你将结果赋值给double的事实并不重要,如果两个操作数都是整数,你将得到整数数学。
所以ft
总是0
,所以cel
总是0
尝试
double ft = 5.0/9.0;
答案 2 :(得分:0)
当您对两个整数进行操作时,结果不会转换为double。它仍然只是int。 要将结果设置为double,至少其中一个数字应为double。,例如
double ft = 5.0/9; //double
double ft = 5/9.0;//double
double ft = 5.0/9.0;//double
虽然
double ft = 5/9; //int 0