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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵嘉男 中级黑马   /  2012-4-22 20:20  /  2291 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Pad {

private int a;
private int b;

public Pad(int a,int b) {
this.a = a;
this.b = b;

}
public int sum(){

return a+b;
}
public int sub(){
return a-b;
}
public int mul(){
return a*b;
}
public double div(){
return a/b;
}
public static void main(String[] args) {
Pad h1=new Pad(10,4);
h1.sum();
h1.sub();
h1.mul();
h1.div();

System.out.println(+h1.sum());
System.out.println(+h1.sub());
System.out.println(+h1.mul());
System.out.println(+h1.div());

上面的程序运行结果
14
6
40
2.0
因为double所以是2.0,为什么不是2.5,怎么能实现结果是2.5,求解

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

8 个回复

正序浏览
public double div(){
return a/b;
}
首先a,b都是int类型的,所以a/b的结果是int类型的。
你最后返回double,是把a/b得到的int数值转换成了double类型的。
可以这样试试,你把a或者b,或者a,b都定义成double类型的,再看看结果,会得到2.5
回复 使用道具 举报
方法div()中语句return a/b实际上是将a/b运算后的int型数据转换成double型数据返回的,
因为a,b都是int型数据,所以a/b的结果是2,装换成double型后事2.0。
回复 使用道具 举报
王怡然 黑马帝 2012-4-22 20:44:44
7#
本帖最后由 王怡然 于 2012-4-22 20:46 编辑
  1. public class Pad
  2. {
  3. private int a;
  4. private int b;

  5. public Pad(int a,int b)
  6. {
  7.   this.a = a;
  8.   this.b = b;
  9. }
  10. public int sum()
  11. {
  12.   return a+b;
  13. }
  14. public int sub()
  15. {
  16.   return a-b;
  17. }
  18. public int mul()
  19. {
  20.   return a*b;
  21. }
  22. public double div()
  23. {
  24.   return (double)a/b;//在这个位置上强转成double的类型即可;
  25. }
  26. public static void main(String[] args)
  27. {
  28.   Pad h1=new Pad(10,4);
  29.   h1.sum();
  30.   h1.sub();
  31.   h1.mul();
  32.   h1.div();
  33.   
  34.   System.out.println(+h1.sum());
  35.   System.out.println(+h1.sub());
  36.   System.out.println(+h1.mul());
  37.   System.out.println(+h1.div());
  38.   }
  39. }
复制代码
首先我想说的第一点就是你这格式真是让人看着难受;
代码在此,解决方法给您注释上了;

回复 使用道具 举报
你要先把变量a、b的int型强转成double或者float型才能输出小数,希望可以帮到你,
public class  Pad{

private int a;
private int b;

public Pad (int a,int b) {
this.a = a;
this.b = b;

}
public int sum(){

return a+b;
}
public int sub(){
return a-b;
}
public int mul(){
return a*b;
}
public double div(){
return (double)a/(double)b;
}
public static void main(String[] args) {
        Pad h1=new Pad(10,4);
h1.sum();
h1.sub();
h1.mul();
h1.div();

System.out.println(+h1.sum());
System.out.println(+h1.sub());
System.out.println(+h1.mul());
System.out.println(+h1.div());

}
}

14
6
40
2.5
回复 使用道具 举报
  1. package cn.text;

  2. public class Foo {

  3. private int a;
  4. private int b;

  5. public Foo(int a,int b) {
  6. this.a = a;
  7. this.b = b;

  8. }
  9. public int sum(){

  10. return a+b;
  11. }
  12. public int sub(){
  13. return a-b;
  14. }
  15. public int mul(){
  16. return a*b;
  17. }
  18. public double div(){
  19. return (double)a/(double)b;
  20. }
  21. public static void main(String[] args) {
  22. Foo h1=new Foo(10,4);
  23. h1.sum();
  24. h1.sub();
  25. h1.mul();
  26. h1.div();

  27. System.out.println(+h1.sum());
  28. System.out.println(+h1.sub());
  29. System.out.println(+h1.mul());
  30. System.out.println(+h1.div());
  31. }
  32. }
复制代码
传入参数是整形的
回复 使用道具 举报
本帖最后由 邱俊杰 于 2012-4-22 20:48 编辑

你两个int 类型相除结果就是int类型、   不会是double。

public double div(){
return (double)a/b;
}    这样可以得出2.5

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 RWJ2012 于 2012-4-22 20:38 编辑

当除号"/"两边是整型数的时候,所得的结果也是整型数(5/2商是2),因为你除法函数的返回类型是double类型,故在控制台打印输出2.0,若要输出2.5,可以采用如下三种其中一种就可以实现。

第一种:
  1. public double div() {
  2. return a /(double) b;
  3. }
复制代码
第二种:
  1. public double div() {
  2. return (double)a / b;
  3. }
复制代码
第三种:
  1. public double div() {
  2. return (double)a /(double)b;
  3. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
你将变量a、b都定义为整形了啊,它们相除的话,得到的是个整数值,再转为float型也只是后面多加个0,你想返回2.5,那a、b必须有一个是float类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马