程序无法识别我创建的方法

时间:2014-04-16 01:02:36

标签: java arrays object

我是初学者,所以我的代码相当粗糙。我做了一个Squares的对象类。在我的主程序中,我创建了一个Squares数组,每个都有一个不同长度的正方形。我也可以制作数组并打印出每个元素。

我正在尝试制作一个方法,将数组中方块的所有区域组合在一起,然后返回一个舍入为总面积的圆边长度。

方法的部分代码:

  public int totalArea(Square[] s)
   {
     int arraylength=s.length;
     int area_total=0;
     int area_ind=0; 
     double side_new=0;
     int side_real=0;

     for (int i = 0; i < arraylength; i++)
        {
          area_ind=s[i].area();
          area_total+=area_ind;
        }

    side_new= Math.sqrt(area_total);
    side_real= (int)(side_new);
    return side_real;

  }

这是实际“主”文件的代码:

        public class as5_apprun
    {

        public static void main(String[] args)
        {
           Square[] original=
          {  
             new Square(),
             new Square(1,new Point (0,0)),
             new Square(2,new Point (0,0)),
             new Square(3,new Point (0,0)),
             new Square(4,new Point (0,0)),
             new Square(5,new Point (0,0))
          };

这是错误:

     int total= totalArea(original);
     This fails giving the error
      int total= totalArea(original);
                 ^
         symbol:   method totalArea(Square[])
     location: class as5_apprun
       1 error

更新: 问题已在评论中解决

2 个答案:

答案 0 :(得分:1)

您有totalArea作为Square的实例方法,但它只对一组正方形进行操作。

您应该声明public static int totalArea(Square[] s)并将其引用为int total= Square.totalArea(original);

假设totalArea位于Square.java内。

答案 1 :(得分:1)

由于您的totalArea方法是一个实例方法,因此您需要有一个Square类的实例来调用该方法。

其他方面,将totalArea方法声明为静态,以便您可以在没有任何Square实例的情况下调用该方法

total= Square.totalArea(original);
  

你能解释一下Static的不同之处吗?再次感谢。

静态方法属于类,而不属于任何实例,因此,您可以在没有任何实例的情况下调用这些方法。