为了账号安全,请及时绑定邮箱和手机立即绑定

可以检查下我这个java代码哪里错了吗?

可以检查下我这个java代码哪里错了吗?

import java.util.*;public class ee {public static void main(String []agrs) {   Scanner sc=new Scanner(System.in);   System.out.println("告诉我你的宽?");   double wa=sc.nextDouble();   System.out.println("告诉我你的长?");   double da=sc.nextDouble();   System.out.println("告诉我你的高?");   double ha=sc.nextDouble();   parallelepiped wm=new parallelepiped();   wm.setwidth(wa);   wm.setdepth(da);   wm.setheight(ha);   System.out.println("面积="+wm.getsurface()+"体积="+wm.getvolume()+"周长="+wm.getlength());}}class parallelepiped{ private double width,depth,height; public static void setwidth(double wa) { double width=wa; } public double width() { return width; } public static void setdepth(double da) { double depth=da; } public double getdepth() { return depth; } public static void setheight(double ha) { double height=ha; } public double getheight() { return height; } public double getsurface() { return width*depth; } public double getvolume() { return width*depth*height; } public double getlength() { return (width+depth)*2; } public String tostring() { return "面积是="+getsurface()+"体积是="+getvolume()+"周长是="+getlength(); }  }为什么我输入长,宽,高的数值后,最后计算结果都是0.0?比如用户回答宽是2,长2,高3,那么面积不可能算出来是0.0的啊
查看完整描述

3 回答

?
酒木君

TA贡献23条经验 获得超7个赞

有这样几个问题,

  1. get\set方法不应该是static修饰的,你需要知道静态方法是优先于成员方法和成员变量加载的,这样的写法很容易出现问题.

  2. set方法中 double width = wa; 这句话的意思是你将main函数中手动传入的参数赋值给了一个新声明的变量,这个变量是局部变量,和你上面定义的私有成员变量是没有一毛钱关系的,正确的写法应该是去掉static方法修饰词,将方法体中内容改为this.width = wa;

  3. toString中的方法既然已经写好了打印对象信息的格式,在测试中直接调用就可以.

  4. 注意代码规范和变量命名方式,尽量避免出现无意义或存在歧义的变量名出现,这是一个合格程序员的基本要素.

查看完整回答
2 反对 回复 2018-05-22
  • 慕移动2184654
    慕移动2184654
    谢谢你的解释说明 我受益很大 谢谢大神
  • 酒木君
    酒木君
    受益很大却不采纳,最终还是采纳了直接给你答案的人,这么懒可不太好
  • 3 回答
  • 0 关注
  • 1849 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信