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个赞
有这样几个问题,
get\set方法不应该是static修饰的,你需要知道静态方法是优先于成员方法和成员变量加载的,这样的写法很容易出现问题.
set方法中 double width = wa; 这句话的意思是你将main函数中手动传入的参数赋值给了一个新声明的变量,这个变量是局部变量,和你上面定义的私有成员变量是没有一毛钱关系的,正确的写法应该是去掉static方法修饰词,将方法体中内容改为this.width = wa;
toString中的方法既然已经写好了打印对象信息的格式,在测试中直接调用就可以.
注意代码规范和变量命名方式,尽量避免出现无意义或存在歧义的变量名出现,这是一个合格程序员的基本要素.
添加回答
举报
0/150
提交
取消