遇到一个类的对象给方法值传递时的出现的问题,求教?
这是书上的一个习题,请注意第3行和第6行的新建类的对象时的参数,根据书上的习题这样的传递参数应该是正确的,但书上的习题都只有一个参数(数据域),这个题有两个参数,编译时提示getArea()和getPerimeter()方法找不到正确的参数,怎么办?
public class TestRectangle{
public static void main(String[] args){
Rectangle jx1=new Rectangle(4,40);
System.out.println("jx1's area is "+jx1.getArea()+
"perimeter is"+jx1.getPerimeter());
Rectangle jx2=new Rectangle(3.5,35.9);
System.out.println("jx2's area is "+jx2.getArea()+
"perimeter is "+jx2.getPerimeter());
}
}
class Rectangle{
//数据域
double width;
double height;
//创建一个无参构造方法
Rectangle(){
width=1;
height=1;
}
//创建一个指定值的矩形构造方法
Rectangle(double newWidth,double newHeight){
width=newWidth;
height=newHeight;
}
//创建一个计算矩形面积的方法
double getArea(double width,double height){
double Area=0;
Area=width*height;
return Area;
}
//创建一个计算周长的方法
double getPerimeter(double width,double height){
double perimeter=0;
perimeter=(width+height)*2;
return perimeter;
}
}
------解决方案--------------------修改下,两个方法都不需要传入参数的,你构造器里面已经赋值了,这里就没必要再使用传参了
//创建一个计算矩形面积的方法
double getArea(){
double Area=0;
Area=width*height;
return Area;
}
//创建一个计算周长的方法
double getPerimeter(){
double perimeter=0;
perimeter=(width+height)*2;
return perimeter;
}
------解决方案--------------------get方法不要带参数,参数通过构造函数或者set方法注入!
------解决方案--------------------类里面的两个方法是带参的,你调用的方法却是不带参的,你可以重写两个不带参的方法,楼上写的那样,加进类里去就可以了。java不像javascript 方法的参数可以省略。
------解决方案--------------------原因:你定义的getArea和getPerimeter方法有参数,但在调用的时候却是调用没有参数的这两个方法,当然会报错;
解决:直接将getArea和getPerimeter方法中的参数去掉即可;
public class TestRectangle
{
public static void main(String[] args)
{
Rectangle jx1 = new Rectangle(4, 40);
System.out.println("jx1's area is " + jx1.getArea() + "perimeter is"
+ jx1.getPerimeter());
Rectangle jx2 = new Rectangle(3.5, 35.9);
System.out.println("jx2's area is " + jx2.getArea() + "perimeter is "
+ jx2.getPerimeter());
}
}
class Rectangle
{
double width;
double height;
Rectangle()
{
width = 1;
height = 1;
}
Rectangle(double newWidth, double newHeight)
{
width = newWidth;
height = newHeight;
}
double getArea()
{
// double Area = 0;
// Area = width * height;
// return Area;
return width*height;
}
double getPerimeter()
{
// double perimeter = 0;
// perimeter = (width + height) * 2;
// return perimeter;
return (width+height)*2;
}
}