一个关于list的问题

mengmingtao 2012-03-03 02:14:13
在这个程序里。
首先建立了一个数组(1,2,0,2,1,0)。
然后建立一个list,并将数组的非0元素加入list。于是list(1,2,2,1)

我然后想把list中元素重新拷贝到数组的非0位置。按照我的想发,数组和list的内容本应不会有变化的。
可是却发现得到了这样一个输出,无论是数组还是list都改变了。
望大神们不吝赐教~

程序如下:
/*
* temp:
* 1 2 2 1
* bitmaps
* 1 2 0 2 1 0
* ---------changed--------
* temp
* 2 2 2 2
* bitmaps
* 1 1 0 1 1 0
*/

import java.util.*;
import java.awt.*;

public class MainTest{
public static void main(String[] args){
int[] bitmaps = new int[6];
bitmaps[0] = 1;
bitmaps[1] = 2;
bitmaps[2] = 0;
bitmaps[3] = 2;
bitmaps[4] = 1;
bitmaps[5] = 0;

ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<bitmaps.length;i++){
int index = 0;
if(bitmaps[i]!=0){
list.add(index,bitmaps[i]);
index++;
}
}

System.out.println("temp:");
for(int i=0;i<list.size();i++){
System.out.print(" "+list.get(i));
}
System.out.println("");

System.out.println("bitmaps");
for(int i=0;i<bitmaps.length;i++){
System.out.print(" "+bitmaps[i]);
}
System.out.println("");

System.out.println("---------changed--------");

System.out.println("temp");
for(int i=0;i<bitmaps.length;i++){
int j = 0;
if(bitmaps[i]!=0){
bitmaps[i] = list.get(j);
j++;
System.out.print(" "+list.get(j));
}
}
System.out.println("");

System.out.println("bitmaps");
for(int i=0;i<bitmaps.length;i++){
System.out.print(" "+bitmaps[i]);
}
System.out.println("");
}
}
...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengmingtao 2012-03-03
  • 打赏
  • 举报
回复
谢谢
[Quote=引用 1 楼 ldh911 的回复:]

目测这段程序有Bug:
Java code

System.out.println("temp");
for(int i=0;i<bitmaps.length;i++){
int j = 0; // 放错位置
if(bitmaps[i]!=0){
bitmaps[i] = list……
[/Quote]
MiceRice 2012-03-03
  • 打赏
  • 举报
回复
目测这段程序有Bug:

System.out.println("temp");
for(int i=0;i<bitmaps.length;i++){
int j = 0; // 放错位置
if(bitmaps[i]!=0){
bitmaps[i] = list.get(j);
j++;
System.out.print(" "+list.get(j)); // 按理来说应该之前打印,不过问题不大
}
}

问题在:int j=0,这行应该放到for之前,也就是说:


System.out.println("temp");
int j = 0; // 移动到这里
for(int i=0;i<bitmaps.length;i++){
if(bitmaps[i]!=0){
bitmaps[i] = list.get(j);
System.out.print(" "+list.get(j));
j++;
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧