- Java code
class CCalculator{ int a,b,c;void set_value(int x,int y,int z){ a=x; b=y; c=z;}void show(){ System.out.println("a="+a+" b="+b+" c="+c);}int add(){ return a+b+c;}int sub(){ return a-b-c;}int mul(){ return a*b*c;}int avg(){ return (a+b+c)/3;}}public class p_155_10 { /** * @param args */ public static void main(String[] args) { CCalculator obj=new CCalculator(); obj.set_value(3, 4, 1); int x=4,y=3; System.out.println("x*y="+x*y); System.out.println("x/y="+x/y+" x/y="+(double)x/y); System.out.println("add="+obj.add()+" sub="+obj.sub()+" mul="+obj.mul()+" avg="+(double)obj.avg());//这里为何没有从int转换成double呢? // TODO 自动生成方法存根 }}
求高手解答,不甚感激!
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
一:double已经把类型转了 你的avg()函数返回的是一个int型,当调用函数之后再强转失去效果
二:改正后的
double avg(){
return (double)(a+b+c)/3;
}