韩顺平JAVA入门第67课练习:定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:摄氏温度=5/9*(华氏温度-32),请求出华氏温度234.5度对应的摄氏温度。
写代码:
double Fscale = 234.5;
double Cscale = 5 / 9 * (Fscale - 32);
System.out.println("华氏温度" + Fscale + "对应的摄氏温度为" + Cscale);
输出结果竟然是0.0(踩坑了!);
原因在于5/9在Java运算里等于0.0。尽管已经将Cscale定义为double, 但5/9仍默认是int,结果为0,再去*(234.5-32)仍=0,0再double的结果也只能是0.0;所以需要写成5.0/9;
正确输出结果:华氏温度234.5对应的摄氏温度为112.5
public class ArithmeticOperatorExercise02 {
public static void main(String[] args) {
//1.需求:假如还有59天放假,问:合XX个星期零XX天
//2.思路分析:一个星期有7天,59÷7取余数为“零XX天”
int days = 59;
int weeks = days / 7;
int leftDays = days % 7;
System.out.println(days + "天 合" + weeks + "个星期零" + leftDays + "天");
//输出结果:59天 合8个星期零3天 正确
//定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:
//摄氏温度=5/9*(华氏温度-32),
//请求出华氏温度234.5度对应的摄氏温度。
double Fscale = 234.5;
double Cscale = 5.0 / 9 * (Fscale - 32);
//如果不写5.0/9,只写5/9,Java会默认5/9是int类型,结果为0,再去*(234.5-32)仍=0;
//对计算结果0再double的结果也只能是0.0;
System.out.println("华氏温度" + Fscale + "对应的摄氏温度为" + Cscale);
}
}