可以检查下我这个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的啊

慕移动2184654
浏览 1809回答 3
3回答

酒木君

有这样几个问题,get\set方法不应该是static修饰的,你需要知道静态方法是优先于成员方法和成员变量加载的,这样的写法很容易出现问题.set方法中 double width = wa; 这句话的意思是你将main函数中手动传入的参数赋值给了一个新声明的变量,这个变量是局部变量,和你上面定义的私有成员变量是没有一毛钱关系的,正确的写法应该是去掉static方法修饰词,将方法体中内容改为this.width = wa;toString中的方法既然已经写好了打印对象信息的格式,在测试中直接调用就可以.注意代码规范和变量命名方式,尽量避免出现无意义或存在歧义的变量名出现,这是一个合格程序员的基本要素.
打开App,查看更多内容
随时随地看视频慕课网APP