在网页编程里 length代表数组实际的长度 而不是定义时的长度。但昨天在JAVA 里用length的时候 出来的是数组定义时的长度。会出现下标越界的错误提示。//for(int i=0;i<a.length;i++)我是想问下 在JAVA里如果length不是代表实际长度的话,那有什么方法得到数组的实际长度?

解决方案 »

  1.   

    奇怪的问题.length就是数组的实际长度.
      

  2.   

    你for循环没问题 肯定是下面在访问的时候越界了
      

  3.   

    java语言只有在程序执行时,数组长度才能确定下来!
    所以你可以按如下方法实现:
    A[] a = new A[5];
    for(int i = 0;i < a.length;i++){
      a[i] = new A();
    }
    或者
    list 是将数据库检索出来的数据放入ArrayList对象里。
    A[] a = new A[list.size];
    for(int i = 0;i < a.length;i++){
      a[i] = new A();
    }
      

  4.   

    有3个类:Rectangle  RectCollectionManager  Test在Rectangle类中:
    int top;
    int height;
    int left;
    int width;
    public Rectangle(int top,int height,int left,int width)
    {......}
    public void print()
    {......}在RectCollectionManager类中:
    public void Add(Rectangle rect)
    {
       int (int i=0;i<rect.length;i++)
        {
           rect.print();
        }
    }在测试类Test中:Rectangle []r1=new Rectangle(5);
    r1[0]=new Rectangle(1,1,1,1);
    r1[1]=new Rectangle(11,11,11,11);
    RectCollectionManager r= new RectCollectionManager();
    r.Add(r1);
    r1[0]和r1[1]能打印出来的,可后面跟出一堆话我也不知道是什么,应该是越界了吧?
      

  5.   

    好奇怪的问题,r.Add(r1);  r1是数组,而public void Add(Rectangle rect) 接受的类型不是数组.new Rectangle(5); 也不是创建数组.
    把上面的问题都该了,因为5个元素,只创建了两个具体的,可能会出现空指针错误,也不会有数组越界的问题.
      

  6.   

    明显是null错误
    你只声明了r1[0]和r1[1]
    2 3 4 都是空的,null的
    你直接访问null的print()怎么会不出错
    声明也写错了..
    public void Add(Rectangle rect) <- 不是传的数组吗..  public void Add(Rectangle[] rect)public void Add(Rectangle[] rect) 

      int (int i=0;i <rect.length;i++) 
        { 
          if(rect[i] != null)
              rect[i].print(); 
        } 

      

  7.   

    我写错了 Add(Rectangle []rect)   有[]  的
      

  8.   

    哦,知道了,刚学JAVA还有好多不懂的,先谢了
      

  9.   

    我是想问下 在JAVA里如果length不是代表实际长度的话,那有什么方法得到数组的实际长度?
    答:若楼主求a数组(int[] a;)的长度;则可以自己用System.out.print(a.length);验证一下,看输出的数组长度是否与你自己规定长度相等!其实有些小问题自己可以验证的……呵呵:)
      

  10.   

    length是数组大小,但不是实际保存元素的个数
      

  11.   

     如果开始就定义了数组的长度,那么length 得到的是定义好的长度.可以写一个循环,用条件判断一下,就可以将数组的实际长度得出来.....
      

  12.   

    我想问,你的程序编译能过吗?汗!
    int (int i=0;i <rect.length;i++) 

    rect.print(); 
    } 这能循环码?
      

  13.   

    换一种循环的方式:for(int i:a) {
    }
      

  14.   

    1.js中数组可动态改变长度,Java中是不行的
    2.既然有异常,就该详细的看下异常的信息,不能涉及到数组就是越界;这里明显是数组未赋值元素空指向异常
      

  15.   

    leagth代表数组占用存储单元的个数。使用new 为数组分配空间。
      

  16.   

    LZ,数组的实际长度在你那样定义的时候就固定死了的。而不是你添加的数组中的元素个数来决定数组的长度。
    这也是数组和集合的不同,集合是可以根据你添加的元素个数来得到你集合的长度的。所以LZ你例子中只添加了2个元素,循环遍历整个数组并使用数组中元素的时候,会出现空指针异常。
    楼主可以在使用前加一个判定
    if(rect!=null){
    }
    写程序的时候要习惯这么写来防止空指针,
    还有,LZ.下次帖的程序一定要是IDE编译通过的哦。