日期:2014-05-20  浏览次数:20578 次

菜鸟求解习题,关于强制转换的
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 自动生成方法存根

    }

}



求高手解答,不甚感激!

------解决方案--------------------
探讨
int avg(){
return (a+b+c)/3;
}
我想把这个方法里面的结果转换成double类型的。或者说这个方法如何修改,才能得到有小数结果?

return double(a+b+c)/3;
这样不行?

------解决方案--------------------
探讨

x*y=12
x/y=1 x/y=1.3333333333333333
add=8 sub=-2 mul=12 avg=2.0
转了,你在试试

------解决方案--------------------
一:double已经把类型转了 你的avg()函数返回的是一个int型,当调用函数之后再强转失去效果
二:改正后的
double avg(){
return (double)(a+b+c)/3;
}