public class xiti{
public static void main(String args[]){
int oldArr[] = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
//newArr = new int[oldArr.length];
int newArr[] = null;
int x = 0; //newArr数组键位的基数 for(int i = 0 ; i < oldArr.length ; i ++ ){ if(oldArr[i] == 0){ //不知该如何删除数组中的索引
oldArr[i] = null;
}else{
x++;
System.out.println("现在的x是"+x); //程序第一次循环能执行到这里
newArr[x] = oldArr[i]; //到这里必定报main错,原因应该是newArr[x] 这个用法有误
}
}
System.out.println("oldArr去除0后变成了:"); for(int i:oldArr){
System.out.print(i+"+");
} System.out.println("新数组newArr的样子为:"); for(int i:newArr){
System.out.print(i+"+");
}
}
}
这段代码总在newArr[x] 这种赋值的地方出现问题,请问我应该怎么改?
不是需要什么功能,纯粹的数组练习题。无法灵活去除一个数组索引的存在吗?我以为可以象php一样unset() 或 = null呢我是真的想让为0的oldArr[i]被清空或从oldArr数组中剔除。那么为什么newArr[x] = oldArr[i]; 也出错呢。
public class Xiti {
public static void main(String args[]){
int oldArr[] = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
//newArr = new int[oldArr.length];
int newArr[] = null;
int x = 0; //newArr数组键位的基数 //计算非零元素的数目
for(int i:oldArr){
if(i!=0)
x++;
}
newArr=new int[x];
for(int i = 0 ,j=0; i < oldArr.length ; i ++ ){ if(oldArr[i] != 0){
newArr[j] = oldArr[i];
j++;
}
}
System.out.println("oldArr:"); for(int i:oldArr){
System.out.print(i+",");
} System.out.println("新数组newArr的样子为:"); for(int i:newArr){
System.out.print(i+",");
}
}}
谢谢~总算是成了。只是不知道刚刚我int oldArr[oldArr.length]; 后 newArr[x] = oldArr[i]; 总是报错是为什么,是因为位数不对么=。=算了,不纠结。
凡是数组,就算申明了,也还是需要开辟内存空间才可以(new),是这样吗?
明白了~