import java.util.*;
class testt{
    static Vector one=new Vector();
    static Vector sub=new Vector();
    public testt()
    {
    sub.add("val");
    sub.add("");
    }
    
    static void addval()
    {
        for(int i=0;i<10;i++)
        {
            sub.setElementAt(i+"",1);
            one.add(sub);
        }
        int i=one.size();
        while(i>0)
        {
            
            System.out.println( ((Vector)one.elementAt(i-1)).elementAt(1).toString() );
            i--;
        }
    }
    public static void main(String[] args)
    {
        testt t=new testt();
        t.addval();
    }
            
    
}
在下打印出来的结果,全部为9;
在下希望的结果应该是0到9;compile-single:
run-single:
9
9
9
9
9
9
9
9
9
9
生成成功(总时间:1 秒)请问题,为何会全是9呢?应该如何实到打印出来的值是0到9,谢谢!!!

解决方案 »

  1.   

    sub.setElementAt(i + "", 1);
    one.add(sub);你每次都在add一个同样的sub哦,应该重新构建一个
      static void addval() {
        for (int i = 0; i < 10; i++) {
          sub = new Vector();
          sub.add("val");
          sub.add("");
          sub.setElementAt(i + "", 1);
          one.add(sub);
        }
      

  2.   

    Vector在调试的时候可以直接打印
    不用循环遍历
    Vector a = new Vector();
    System.out.println(a);
      

  3.   

    你这样 每次i++后 你都把i值add进one里。然后i++后 又把值add进one里 并且覆盖了前次add的内容。应该sub里添加一个,就复制给one一个。
    import java.util.*; 
    class Test{ 
        static Vector one=new Vector(); 
        static Vector sub=new Vector(); 
        public Test() { } ;
        
        static void addval() 
        { 
            for(int i=0;i <10;i++) 
            { 
    sub=new Vector();
        sub.add("val"); 
        sub.add(""); 
                sub.setElementAt(i+"",1); 
                one.add(sub); 
            }      
                System.out.println(one); 
        } 
        public static void main(String[] args) 
        { 
            Test t=new Test(); 
            t.addval(); 
        }