因为你加了两次i,,,,if语句执行完后加了一次,for循环加了一次, 自己可以推导下。我改成这样的了 加油,好好学习public class Quxiang {public static void main(String[] args) {
// TODO Auto-generated method stub
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int i,k=0;
int newArr[]=new int[12];for(i=0;i<oldArr.length;i++)/* if(oldArr[i]==0)
i++;
else{ newArr[k++]=oldArr[i];
}
*/
if(oldArr[i]!=0) //改的
newArr[k++]=oldArr[i]; //改的for(i=0;i<newArr.length;i++)
System.out.print(newArr[i]);
}}
// TODO Auto-generated method stub
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int i,k=0;
int newArr[]=new int[12];for(i=0;i<oldArr.length;i++)/* if(oldArr[i]==0)
i++;
else{ newArr[k++]=oldArr[i];
}
*/
if(oldArr[i]!=0) //改的
newArr[k++]=oldArr[i]; //改的for(i=0;i<newArr.length;i++)
System.out.print(newArr[i]);
}}
或者可以这么改。for循环不 i++ if判断 是否中都添加i++语句。
public class Quxiang {public static void main(String[] args) {
// TODO Auto-generated method stub
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int i,k=0;
int newArr[]=new int[12];for(i=0;i<oldArr.length;) if(oldArr[i]==0)
i++;
else{
newArr[k++]=oldArr[i];
i++;
}
for(i=0;i<newArr.length;i++)
System.out.print(newArr[i]);
}}
// TODO Auto-generated method stub
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5},i,k=0;
int newArr[]=new int[12];
for(i=0;i<oldArr.length;i++)
if(oldArr[i]==0)
i++;//这里i++后提前满足条件改为continue跳出本次循环进行下一次
else newArr[k++]=oldArr[i];for(i=0;i<newArr.length;i++)
System.out.print(newArr[i]);
}}
// TODO Auto-generated method stub
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int i,k=0;
int newArr[]=new int[12];
for(i=0;i<oldArr.length;)
if(oldArr[i]==0)
{
i++;
}else {
newArr[k++]=oldArr[i];
i++;
}for(i=0;i<newArr.length;i++)
System.out.print(newArr[i]);
}}
可以考虑使用Array和Vector,也许会更简单一些public class Quxiang {
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[oldArr.length];
int newArrIdx = 0;
for (int oldNum : oldArr) {
if (oldNum != 0) {
System.out.print(newArr[newArrIdx++] = oldNum);
}
}
}
}134566547675
public static void main(String[] args) {
int oldArr[] = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 }, i, k = 0;
int newArr[] = new int[12];
for (i = 0; i < oldArr.length; i++)
if (oldArr[i] != 0) {
newArr[k++] = oldArr[i];
} for (i = 0; i < newArr.length; i++)
System.out.print(newArr[i]);
}楼上都已经给出正确解答了。
我给楼主几个建议吧。
(1)楼主描述问题,要说说这段程序的是实现啥功能的。
(2)建议多debug一下。
(3)在for循环里面要注意一点,控制循环条件(这里的i)变化的地方最好在for ()这个括号内。
否则很容易出现问题,比如你在{}里面改变了i的值,又在for ()里面改变了i的值,这种写法
是很容易出现错误的,最好杜绝这种写法。