public class ArrayCompute
{

ArrayCompute(){

  float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};

};


float aSum(){

float sum = 0.0f;

    for (int i=1;i<array.length;i++){      /* array.length 编译出错,不知道为什么
                                                     能告诉我原因吗?我想知到怎么得到数组
                                                     的长度?前面已经构造它并初始化了啊?
                                                     为什么在aSum()这个方法不能用
                                                     array.length ?? 
    };
return sum;                     
};

public static void main()
{

}

}

解决方案 »

  1.   

    array.length没有错,是你大括号后的分号错了
    去掉试试
      

  2.   

    用array.length得到数组长度是没有问题的,问题是你的变量float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};
    作用域是局部的,也就是说变量array只在构造函数ArrayCompute(){}中起作用!
    而你使用数组长度的地方却是在方法float aSum(){}里,所以会报错变量未定义!
    修改你的程序:
    public class ArrayCompute
    {
    float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};
    ArrayCompute(){  

    };

    float aSum(){
        float sum = 0.0f;
        for (int i=1;i<array.length;i++){           };
        return sum;                     
    }; public static void main()
    {

    }

    }
      

  3.   

    谢谢lip009(深蓝忧郁),但是我还有一个问题,想请教您!我把原来的程序改成:
    public class ArrayCompute
    {

    ArrayCompute(){

      float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};

    };


    float aSum(int arrLenth){              //求数组元素之和

    float sum = 0.0f;

        for (int i=1;i<arrLenth;i++){
        };
    return sum;
    };


    float aAvg(int arrLenth,float sum){    //求数组元素的平均值

    float avg = 0.0f;

    avg = sum / arrLenth;
    return avg;
    };

    public static void main(String arg[])
    {
    int aLen=0;   //数组长度

    ArrayCompute ArrCom = new ArrayCompute();
    aLen = ArrCom.array.length;
    }

    }// aLen = ArrCom.array.length;  这一句出错了,不知道为什么,能告诉我为什么?以及怎么解决吗? 因为我已经建立一实例对像ArrCom,为什么不能用ArrCom.array.length为得到数据的长度?
      

  4.   

    ArrCom.array指向ArrayCompute这个类,可是类中没有定义array这个变量(程序中你定义成局部变量了),所以是找不到的,应该声明一个类变量就可以了:float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};ArrayCompute(){

    };
      

  5.   

    数组对象array不是类的成员变量
    只是构造函数内部的变量
    要把array的声明放在构造函数外部就可以了
    public class ArrayCompute
    {
    float array[]=null; ArrayCompute(){

      float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};
                      this.array=array;

    };
      

  6.   

    多谢各位,小弟愚钝,还有一事想请求各位大侠讲解一下:
    构造函数已经初如始化.
    ArrayCompute(){

      float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};

    };
    当我通过ArrayCompute这个类来建立一个对像ArrCom时,那个ArrCom也应该有这个float array[] = {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};(是称为成员变量吗?)
    既然有了这个成员变量的数组为什么在ArrCom这个对像里不能用?或者应该怎么用呢?小弟初学,且愚钝,望各位大位海函,能告诉怎么回事?想不明白?
      

  7.   

    因为你的array数组是局部变量,并不是类ArrCom的变量,所以当然不能用ArrCom.array来引用,把程序改成如下样子就可以了:
    public class ArrayCompute
    {
    float array[];//如此定义,才能用

    ArrayCompute(){
    float temp[]= {60f,78.8f,92f,87f,58.4f,66f,73f,97f,79f,96f};
    array=temp;//注意,数组初始化只能在定义时进行初始化
    }
    float aSum(int arrLenth){ //求数组元素之和
    float sum = 0.0f;
    for (int i=0;i<arrLenth;i++){//数组下标应该从0开始
    sum+=this.array[i];
    };
    return sum;
    }; float aAvg(int arrLenth,float sum){ //求数组元素的平均值
    float avg = 0.0f;
    avg = sum / arrLenth;
    return avg;
    }; public static void main(String arg[])
    {
    int aLen=0; //数组长度

    ArrayCompute ArrCom = new ArrayCompute();
    aLen = ArrCom.array.length;
    System.out.println(aLen);
    }
    }