加入我有一个对象Test
现在我定义Test[][] tests=new Test[length1][];
可以对第二维的长度动态分配吗
毕设出了这个问题,现在急死了,大家帮忙看下,看如何解决
我先谢谢大家了!~谢谢`

解决方案 »

  1.   

    你把你的需求说下,如果是要实现类似的动态问题,建议用 List,因为 List里面可以再套list,或者 Array当然,你也可以List[]形式,
      

  2.   

    在Java中,多维数组是数组的数组   
      所以,当你给多维数组分配内存时,你只需指定第一个维数的内存即可,其它维数手工分配即可,例:   
        
      Test  tests[][]   =   new   Test[3][];   
      tests[0]   =   new   Test[4];   
      tests[1]   =   new   Test[2];   
      tests[2]   =   new   Test[8]
      

  3.   

    java不支持自己对象数组的动态定义,长度是在初始化的时候就确定了的。
    如果需要可以用List数组来实现
      

  4.   

    也可以嵌套集合实现,ArrayList等都可以
      

  5.   

    这种一般都是用二维List实现ArrayList<ArrayList<String>> l=new ArrayList<ArrayList<String>>();>>();
      

  6.   

    2楼的方法应该是对的了,应该可以用在对象身上的吧
    我给大家看下一个程序,好像是读取数据库数据出问题的,大家帮我看下,谢谢
    我已经按2楼的方法把二维数据定义改过来了,现在读取数据库数据好像还是错的
    好像那条sql语句有点问题
        public Scenery[][] getSceneries()throws ModelException, ApplicationException{
            Connection conn=null;
            Statement stmt=null;
            ResultSet[] rses=null;
            ResultSet rs=null;
            
            try{
                String drname="sun.jdbc.odbc.JdbcOdbcDriver";
                Class.forName(drname);
                String url="jdbc:odbc:guidesys";
                conn=DriverManager.getConnection(url);
                stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
                String sql="select * from scene";
                rs=stmt.executeQuery(sql);
                rs.last();
                int sceneLength=rs.getRow();
                rs.beforeFirst();
                int i=0;
                Scenery[][] sceneries=new Scenery[sceneLength][];
                while(rs.next()){
                        String sql1="select * from scenery where scenery.scene=rs.getInt(1)";
                        rses[i]=stmt.executeQuery(sql1);
                        rses[i].last();
                        sceneries[i]=new Scenery[rses[i].getRow()];
                        rses[i].beforeFirst();
                        int j=0;
                        while(rses[i].next()){
                            sceneries[i][j]=new Scenery(rs.getString(2),rses[i].getString(3),rses[i].getString(4),rses[i].getString(5),rses[i].getString(6),rses[i].getString(7));
                            j++;
                        }
                        i++;
                }
                rs.close();
                stmt.close();
                conn.close();
                return sceneries;
            }catch(Exception e){
                throw new ModelException(ModelException.CAUSE_SNACKS_NOT_FIND);
            }
        }
      

  7.   

    array 和 list应该都行得通,只是我现在需要把对象实体传给客户端,所以我得用对象二维数组
      

  8.   

    access数据库里的数据
    scene表 id 数字 name 文本
    scenery表 id 自动编号 scene 数字 name 文本 其他字段....