黑马程序员技术交流社区
标题:
结果数据类型变化求解
[打印本页]
作者:
施俊
时间:
2012-3-20 17:41
标题:
结果数据类型变化求解
class person
{
protected String name;
protected char sex;
protected int age;
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setSex(char sex)
{
this.sex=sex;
}
public char getSex()
{
return sex;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}
}
class student extends person
{
private long number;
private int chinese;
private int math;
private int english;
public void setNum(long number)
{
this.number=number;
}
public long getNum()
{
return number;
}
public void setChi(int chinese)
{
this.chinese=chinese;
}
public int getChi()
{
return chinese;
}
public void setMat(int math)
{
this.math=math;
}
public int getMat()
{
return math;
}
public void setEng(int english)
{
this.english=english;
}
public int getEng()
{
return english;
}
public double aver()
{
int saver=(chinese+math+english)/3;
return saver;
}
public String toString()
{
return "姓 名:"+getName()+"\n性 别:"+getSex()+"\n年 龄:"+getAge()+"\n学 号:"+getNum()+"\n平均分:"+aver();
}
}
class stuTest
{
public static void main(String[] args)
{
student stu=new student();
stu.setName("张三");
stu.setSex('男');
stu.setAge(20);
stu.setNum(2812);
stu.setChi(98);
stu.setMat(100);
stu.setEng(51);
System.out.println(stu.toString());
}
}
复制代码
打印之后为什么平均分显示为83.0?定义的分数都是整型的,平均分也是整型的,打印后怎么带个小数点呢?内部难道有类型转换吗?
作者:
朱亚安
时间:
2012-3-20 17:45
你定义的public double aver(){}是double的呀。。。。
作者:
谢明
时间:
2012-3-20 17:45
public double aver()
{
int saver=(chinese+math+english)/3;
return saver;
这个返回值类型 是double 呵呵
作者:
魏群
时间:
2012-3-20 22:07
public double aver()
{
int saver=(chinese+math+english)/3;
return saver;
}
返回double
作者:
陈从宾
时间:
2012-3-20 22:24
楼主大意了,下面的函数的返回值是double 类型,虽然您计算结果saver为int类型,但当调用该方法时将int强制转换为了double,所以你的疑惑就出现了···
public double aver()
{
int saver=(chinese+math+english)/3;
return saver;
}
作者:
丁佼
时间:
2012-3-20 22:31
确实强转了,方法的返回值被写成了double型,这时候就不管你计算出来的是什么类型了。
另:
你可以改成 public student aver(){}验证一下,这里你用了一个int强转不到的类型就会报错的,
编译器会报告student类无法接受int值。
作者:
田斌
时间:
2012-3-20 22:43
public
double
aver()
{
int saver=(chinese+math+english)/3;
return saver;
}
确实是设置了返回值类型为double型,改为int型就好了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2