m和n的平均值应该是11.5吧?是实例输出错了还是只要求用int来运算?
public class MathDemo {
public static void main(String[] args) {
//将变量m的初值赋值为10,变量n的初值赋值为5
int m = 10,n=5;
//变量m的值加3,n的值加5
m+=3;
n+=5;
//求m和n的平均值,并将结果存于变量p中
double p = ((double)m+n)/2;
System.out.println("m和n的平均值为:"+p);
//求m的平方乘以n的平方,并将结果存于变量q中
double q = m*m*n*n;
System.out.println("m的平方乘以n的平方为:"+q);
//将p和q的值打印输出
}
}
正在回答
因为对于/运算,如果分子分母都是整数,那么结果是整除后的值,所以(m+n)/2的结果为11,然后赋值给p,将整型转换为double类型,所以结果就是11.0。输出11.5,因为分子或分母为double类型的数,比如将2改为2.0。
除法/运算规则:整数分子/整数分母 结果=整数
浮点数分子/整数分母 结果=浮点数
整数分子/浮点数分母 结果=浮点数
浮点数分子/浮点数分母 结果=浮点数
如:m+n为23是整数,2也为整数,即使按数学角度m+n/2也应该是11.5,但由于都是整数,输出也只能是整数,所以结果为11
而代码中“((double)m+n)“”语句是强行把m+n强制转换成浮点数类型,所以m+n就变为了浮点数,当浮点数m+n/整数2,结果自然也为浮点数,所以结果就为11.5
public class MathDemo { public static void main(String[] args) { //将变量m的初值赋值为10,变量n的初值赋值为5 int m = 10,n=5; //变量m的值加3,n的值加5 m+=3; n+=5; //求m和n的平均值,并将结果存于变量p中 double p = (m+n)/2; System.out.println("m和n的平均值为:"+p); //求m的平方乘以n的平方,并将结果存于变量q中 double q = m*m*n*n; System.out.println("m的平方乘以n的平方为:"+q); //将p和q的值打印输出 } }
这里 m n 是int类型,对于/运算,分子分母是整形,结果也是整形,我们知道在Java中是先运算在赋值,所以(m+n)/2=11, 11再赋值给double类型 变量p会自动转换为11.0
public class MathDemo {
public static void main(String[] args) {
//将变量m的初值赋值为10,变量n的初值赋值为5
double m=10;
double n=5;
//变量m的值加3,n的值加5
m=m+3;
n=n+5;
//求m和n的平均值,并将结果存于变量p中
double p=(int)(m+n)/2;
//求m的平方乘以n的平方,并将结果存于变量q中
double q=(m*m)*(n*n);
//将p和q的值打印输出
System.out.println("p="+p);
System.out.println("q="+q);
}
}
- 参与学习 人
- 提交作业 1789 份
- 解答问题 2907 个
Android大楼Java起,本阶段是Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始入门Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星