list是我定义的一个存储字符串的List

Iterator it=list.iterator();
while(it.hasNext()){
        ob[i]=it.next();
i=i++;
        System.out.println(ob[i]); //这时能正确输出ob数组的每个值
}
我想再输出一次时问题就出现了
for(int k=0;k<len;k++){    //len是list的长度
System.out.println(ob[k]);   //这时就不能正确输出ob数组的每个值了,除了第一个,其他的都是null,这是为什么呢? }

解决方案 »

  1.   

    你没有从list取值,当然是NULL
      

  2.   

    我设了个断点看了下,i的值一直没变哦,也就是i++这个没有执行哦,具体为什么就不清楚了,好像和线程锁定有关,Itrater线程锁定的?楼下解释
      

  3.   

    Iterator it=list.iterator(); 
    while(it.hasNext()){ 
            ob[i]=it.next(); 
            System.out.println(ob[i]); //这时能正确输出ob数组的每个值 
             i=i++;

    这样好像就好了
      

  4.   


    Iterator it=list.iterator(); 
    while(it.hasNext()){ 
            ob[i]=it.next(); 
            System.out.println(ob[i]); //这时能正确输出ob数组的每个值 
            i++; 

    这样,不知道你为什么要i=i++
     
     
      

  5.   


    我已经将list里的每个值都放到ob数组里了
      

  6.   


    我在这段程序上面定义了一个Object的数组ob用来存放list里面的每个元素,i=i++只是为了使数组走到下一个元素,并且最后可以根据i知道数组实际存放的元素个数
      

  7.   

    ob[i]=it.next(); 
    i=i++; 
    System.out.println(ob[i]); 感觉这样不对,应该ob[i]=it.next(); 
    System.out.println(ob[i]);
    i=i++; 
        
      

  8.   

    只说一句,i=i++,哥们你运行看过i的值么?
      

  9.   

    i=i++; 那么i的值永远是你初始化时候的那个 0 写 i++ 就可以了, 你试试
      

  10.   

    Iterator it=list.iterator(); 
    while(it.hasNext()){ 
            ob[i]=it.next(); 
            System.out.println(ob[i++]); //这时能正确输出ob数组的每个值 

    这样试试
      

  11.   

    package com.test.value.v3;import java.util.ArrayList;
    import java.util.Iterator;public class TestList { public static void main(String[] args) {
    ArrayList<String> arraylist = new ArrayList<String>();
    for (int i = 0; i < 5; i++) {
    arraylist.add(String.valueOf(i)); }
    System.out.println("开始时arraylist中的元素有");
    for (int i = 0; i < arraylist.size(); i++) {
    System.out.println("element at" + i + "is" + arraylist.get(i));
    }
    for (int i = 0; i < 1; i++) {
    String[] obj = new String[5];
    Iterator<String> it = arraylist.iterator();
    while (it.hasNext()) {
    obj[i] = it.next();
    System.out.println(obj[i]);
    }
    } String[] arr = new String[arraylist.size()];//创建一个字符串数组
    arr = (String[]) arraylist.toArray(arr);// 将list对像转换为字符串数组
    int len = arr.length;
    for (int j = 0; j < len; j++) {//输出arr对像中的元素
    System.out.println(arr[j]);
    }
    }
    }
      

  12.   

    package com.test.value.v3;import java.util.ArrayList;
    import java.util.Iterator;public class TestList { public static void main(String[] args) {
    ArrayList<String> arraylist = new ArrayList<String>();
    for (int i = 0; i < 5; i++) {
    arraylist.add(String.valueOf(i)); }
    System.out.println("开始时arraylist中的元素有");
    for (int i = 0; i < arraylist.size(); i++) {
    System.out.println("element at" + i + "is" + arraylist.get(i));
    }
    for (int i = 0; i < 1; i++) {
    String[] obj = new String[5];
    Iterator<String> it = arraylist.iterator();
    while (it.hasNext()) {
    obj[i] = it.next();
    System.out.println(obj[i]);
    }
    } String[] arr = new String[arraylist.size()];//创建一个字符串数组
    arr = (String[]) arraylist.toArray(arr);// 将list对像转换为字符串数组
    int len = arr.length;
    for (int j = 0; j < len; j++) {
    System.out.println(arr[j]);
    }
    }
    }不好意思刚才没注意格试,现在重发哈
      

  13.   

    第二次再用的,你得重新再从list取得值,因为Iterator 变量被全部循环使用一次,它的值就已经全部使用完了,跳到最后一个值的最后一位,也就是不存在这个位置的值了,
      

  14.   

    终于看明白,楼主把i++;写成i=i++;了,逻辑错误是最讨厌的!!!
    i=i++;无论执行多少次,i值也不会变,天啊,逻辑错误害死人啊
      

  15.   

    实在是不好意思,其实错误有2个地方
    一个是i的自加那弄错了应该是i++ 或  i+=i
    还有个就是第一个循环最后会有异常,应该先输出元素再自加,否则输出的是数组的下一个元素,最后会超过数组的长度