A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施俊 中级黑马   /  2012-3-20 17:41  /  1736 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class person
  2. {
  3.         protected String name;
  4.         protected char sex;
  5.         protected int age;
  6.         public void setName(String name)
  7.         {
  8.                 this.name=name;
  9.         }
  10.         public String getName()
  11.         {
  12.                 return name;
  13.         }
  14.         public void setSex(char sex)
  15.         {
  16.                 this.sex=sex;
  17.         }
  18.         public char getSex()
  19.         {
  20.                 return sex;
  21.         }
  22.         public void setAge(int age)
  23.         {
  24.                 this.age=age;
  25.         }
  26.         public int getAge()
  27.         {
  28.                 return age;
  29.         }
  30. }
  31. class student extends person
  32. {
  33.         private long number;
  34.         private int chinese;
  35.         private int math;
  36.         private int english;
  37.         public void setNum(long number)
  38.         {
  39.                 this.number=number;
  40.         }
  41.         public long getNum()
  42.         {
  43.                 return number;
  44.         }
  45.         public void setChi(int chinese)
  46.         {
  47.                 this.chinese=chinese;
  48.         }
  49.         public int getChi()
  50.         {
  51.                 return chinese;
  52.         }
  53.         public void setMat(int math)
  54.         {
  55.                 this.math=math;
  56.         }
  57.         public int getMat()
  58.         {
  59.                 return math;
  60.         }
  61.         public void setEng(int english)
  62.         {
  63.                 this.english=english;
  64.         }
  65.         public int getEng()
  66.         {
  67.                 return english;
  68.         }
  69.         public double aver()
  70.         {
  71.                 int saver=(chinese+math+english)/3;
  72.                 return saver;
  73.         }
  74.         public String toString()
  75.         {
  76.                 return "姓  名:"+getName()+"\n性  别:"+getSex()+"\n年  龄:"+getAge()+"\n学  号:"+getNum()+"\n平均分:"+aver();
  77.         }
  78. }

  79. class stuTest
  80. {
  81.         public static void main(String[] args)
  82.         {
  83.                 student stu=new student();
  84.                 stu.setName("张三");
  85.                 stu.setSex('男');
  86.                 stu.setAge(20);
  87.                 stu.setNum(2812);
  88.                 stu.setChi(98);
  89.                 stu.setMat(100);
  90.                 stu.setEng(51);
  91.                 System.out.println(stu.toString());
  92.         }
  93. }
复制代码
打印之后为什么平均分显示为83.0?定义的分数都是整型的,平均分也是整型的,打印后怎么带个小数点呢?内部难道有类型转换吗?

6 个回复

倒序浏览
你定义的public double aver(){}是double的呀。。。。
回复 使用道具 举报
        public double aver()

        {

                int saver=(chinese+math+english)/3;

                return saver;

这个返回值类型 是double   呵呵
回复 使用道具 举报
        public double aver()

        {

                int saver=(chinese+math+english)/3;

                return saver;

        }
返回double
回复 使用道具 举报
楼主大意了,下面的函数的返回值是double 类型,虽然您计算结果saver为int类型,但当调用该方法时将int强制转换为了double,所以你的疑惑就出现了···

public double aver()

        {

                int saver=(chinese+math+english)/3;

                return saver;

        }

回复 使用道具 举报
确实强转了,方法的返回值被写成了double型,这时候就不管你计算出来的是什么类型了。
另:
你可以改成 public student aver(){}验证一下,这里你用了一个int强转不到的类型就会报错的,
编译器会报告student类无法接受int值。
回复 使用道具 举报
田斌 中级黑马 2012-3-20 22:43:09
7#
public double aver()
        {
                int saver=(chinese+math+english)/3;
                return saver;
        }
确实是设置了返回值类型为double型,改为int型就好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马