发布网友 发布时间:2022-04-24 13:00
共5个回答
热心网友 时间:2023-10-13 16:20
把double
value
=
result.size()/term;
改成double
value
=
(double)result.size()/term;
两个int值相处得到的值还是int,得把其中一个转换成double类型就可以了
热心网友 时间:2023-10-13 16:21
主要问题是
double
value
=
result.size()/term;
result.size()
term
必须至少一个是double类型
double
value
=
(double)result.size()/
(double)term;
不然的话
result.size()/term
由于两个数据的类型都是int
然后运算结果也是int
既
5/3
=1
。然后再转换成
double类型
1.0
所以后面的
if(value>(int)value)
value
=
(int)value+1.0;
不会执行。
看一下JAVA的数据类型的转换。
热心网友 时间:2023-10-13 16:21
首先,你看一下size()方法的返回值类型是什么?term是什么类型?如果都是int的话,5/3=1,如果其中有一个是double的话,5/3=1.6666667.
按照你这个题目来看,应该都是int,这样value=1,执行if(value<=1.0)value=1.0
,所以说输出1.0.
楼主欠缺一点基本功啊,再看一下基本数据类型,呵呵。
热心网友 时间:2023-10-13 16:22
5/3=1
第一个if
(1<=1.0
)
为真
value的值为1.0
第二个if(1.0
>
1)为假
value
=(int)value+1.0;
永远不会运算的
double
跟
int
比较,int自动转换成double
再作比较
热心网友 时间:2023-10-13 16:22
你这只是一部分代码
我要看到全代码才知道哪里出错了