我写的代码是这样的
public class jiohuanshuju {
public static void main(String []args){
int[] oldArray={1,2,3,4,5,6,7,8,9,0,14,0,15,17,16,0};
int[] newArray={};
for(int i=0;i<oldArray.length;i++){
int j=0;
if(oldArray[i]!=0){
newArray[j]=oldArray[i];
j++;
}
}
int a=newArray.length;
System.out.print("newArray={"+"\t");
for(int c=0;c<=a;c++){
System.out.print(newArray[c]+","+"\t");
}
System.out.print("}");
}
}结果 提示 如下错误
数组下标越界
public class jiohuanshuju {
public static void main(String []args){
int[] oldArray={1,2,3,4,5,6,7,8,9,0,14,0,15,17,16,0};
int[] newArray={};
for(int i=0;i<oldArray.length;i++){
int j=0;
if(oldArray[i]!=0){
newArray[j]=oldArray[i];
j++;
}
}
int a=newArray.length;
System.out.print("newArray={"+"\t");
for(int c=0;c<=a;c++){
System.out.print(newArray[c]+","+"\t");
}
System.out.print("}");
}
}结果 提示 如下错误
数组下标越界
public class jiohuanshuju {
public static void main(String[] args) {
int[] oldArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 14, 0, 15, 17, 16, 0 };
//int[] newArray = {};
//System.out.println(newArray.length);
//在这里打印数组的长度,是0,所以下面当j大于0时就会越界了,所以上面的代码可以改成
int[] newArray = new int[oldArray.length];
int j = 0;//这句应该放在循环外面,否则每次都是从0开始的
for (int i = 0; i < oldArray.length; i++) {
if (oldArray[i] != 0) {
newArray[j] = oldArray[i];
j++;
}
}
int a = newArray.length;
System.out.print("newArray={" + "\t");
//还有这里c应该是小于a,即newArray.length,数组的小标是从0开始到n-1的。
//for (int c = 0; c <= a; c++) {
for (int c = 0; c < a; c++) {
//在这里判断一下,输出不为0的元素
if(newArray[c] != 0) {
System.out.print(newArray[c] + "," + "\t");
}
}
System.out.print("}");
}
}
public class Jiohuanshuju {
public static void main(String []args){
int[] oldArray={1,2,3,4,5,6,7,8,9,0,14,0,15,17,16,0};
int[] newArray={11,12,13}; int[] tempAry=new int[newArray.length];
for(int i=0;i<newArray.length;i++){
tempAry[i]=newArray[i];
}
newArray=new int[oldArray.length];
for(int i=0;i<oldArray.length;i++){
//// int j=0;
// if(oldArray[i]!=0){
// newArray[j]=oldArray[i];
// j++;
// }
newArray[i]=oldArray[i];
}
// int a=tempAry.length;
// System.out.print("newArray={"+"\t");
oldArray=new int[tempAry.length];
for(int i=0;i<tempAry.length;i++){
oldArray[i]=tempAry[i];
// System.out.print(newArray[i]+","+"\t");
}
// System.out.print("}");
System.out.print("old array:");
for(int i:oldArray){
System.out.print(i+",");
}
System.out.println();
System.out.print("new array:");
for(int i:newArray){
System.out.print(i+",");
}
}
}
我觉得有两个地方有问题
1.int[] newArray={};这个地方没有定义它的长度
2.for(int c=0;c<=a;c++){ 这个地方应该是c<a是 c<=a 的话就越界了