关于java的几个基本数字类型的一个程序问题

public class Ba {
private int n=10,s=4;
private double d;
public double sds(int r) {

r = (int)n/s;
return r;
}

public static void main(String[] args)
{

Ba aa = new Ba();
aa.sds(3);
System.out.println(aa.sds(3));

}

}

比如这个程序,在main里面我把3代进去,结果出来的是2.0,好像10/3不是这结果吧?
为啥?

public class Ba {
private int n=10,s=4;//定义了int类型的两个常量n,s
private double d;//定义了double类型的差数d
public double sds(double r) {//为sds方法传入参数r
//r = n/s;//n,s已经是常量了,就也决定着r也是常量(传入的3将被"="重新赋值)
d= n/r;//因为r为double类型的所以n/r的值的类型也是double类型的(低精度到高精度自动类型转化)
return d;
}
public static void main(String[] args)
{
Ba aa = new Ba();
aa.sds(3);
System.out.println(aa.sds(3));
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-21
public double sds(int r) {

r = (int)n/s;
return r;
}
无论你r 给的什么参数,它运算的都是 10除以4.
第2个回答  2010-11-21
你的Ba中sds的程序,返回的是r = (int)n/s;
也就是你的变量相除的结果返回 n=10 s=4 返回的是10/4
传进来的r没有用到
第3个回答  2010-11-21
不管你丢进去的是几,出来的结果都是2.0吧?
因为你的公式是 r = (int)n/s;
而你丢进去的是(int r),直接被覆盖掉了
第4个回答  2010-11-21
因为你进行了强制类型转换
double a = 2.1;
int b = (int)a;
System.out.println(b);
输出结果是2
相似回答
大家正在搜