日期:2014-05-20  浏览次数:20757 次

小白求救,数组问题,望大神不吝赐教,代码如下
public class Test003 {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成的方法存根
int oldArr[] = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 };
int newArr[] = new int[12];
for (int i = 0; i < oldArr.length; i++) {
if (oldArr[i] == 0) {
i++;
continue;
}
int j = 0;
newArr[j] = oldArr[i];
j++;
}
for (int k = 0; k < newArr.length; k++)
System.out.print(newArr[k] + " ");
}
}
我想实现一个功能,新建一个用于存放结果的数组,然后查找原数组中为0的值,去掉,将去掉0后的值存入新数组,写了如下代码,为什么输出结果是7 0 0 0 0 0 0 0 0 0 0 0?求大神指点,我哪里错了?还有,如果数据量很多,开头肯定不可能知道去掉0后数组还剩12个,怎么使用可变量代替数字?求教
一维数组问题

------解决方案--------------------
你每次执行循环语句是都会执行 int j=0;每次newarr[0]=oldarr[i];所以开头是7,后面的没有值默认为0;
------解决方案--------------------
用list吧,然后在转换成数组
------解决方案--------------------

public static void main(String[] args) {
int oldArr[] = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 };
int newArr[] = new int[12];
int j = 0;
for (int i = 0; i < oldArr.length; i++) {
if (oldArr[i] == 0) {
continue;
}
newArr[j] = oldArr[i];
j++;
}
for (int k = 0; k < newArr.length; k++)
System.out.print(newArr[k] + " ");
}

------解决方案--------------------

public static void main(String[] args) {
int oldArr[] = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 };