日期:2014-05-20  浏览次数:20724 次

遇到一个类的对象给方法值传递时的出现的问题,求教?
这是书上的一个习题,请注意第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;
}
}