作业题目:
思路是遍历oldArr数组,把不等于零的项,重新赋值给newArr。用了如下代码,发现直接报错。原因是newArr[j]的定义有问题,写代码的时候跳过了定义数组长度的步骤,导致出现错误。
public class HomeWork17 {
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[];
int j=0;
for(int i=0;i<oldArr.length;i++){
if(oldArr[i]!=0){
newArr[j]=oldArr[i];
j++;
}
}
}
}
解决办法:想办法确定newArr[j]的长度,这里选择先单独写一个for循环,遍历出0在数组中的个数,然后用newArr[]的长度减去个数。
更正后:
public class HomeWork17 {
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 n=0;//零的个数
for(int i=0;i<oldArr.length;i++){
if(oldArr[i]==0){
n++;
}
}
System.out.println("有"+n+"个0");
int newArr[]=new int[oldArr.length-n];
int j=0;
for(int i=0;i<oldArr.length;i++){
if(oldArr[i]!=0){
newArr[j]=oldArr[i];
j++;
}
}
System.out.print("新数组是:");
for(int ne:newArr){
System.out.print(ne+" ");
}
}
}
最后:记忆一下二维数组和一维数组的遍历、输出方法。
跟一般的输出不同,数组借助for循环进行输出
如:一维数组:for(int ne:newArr){
System.out.print(ne+" ");
}
二维数组:for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}