Delete函数中的for循环被跳过了,是为啥呀?

package week1;

import java.util.*;
import java.util.Scanner;

public class SqList {

public static Object[] listElem; //创建顺序数组

public static int curNum; //当前数组长度

final static int maxsize=100; //最大数组空间

public static  void setcurNum(int j){

    curNum=j;

}


public static void Build()throws Exception{

        int i=0;
        listElem=new Object[curNum];  //创建新的顺序表
        for(i=0;i<curNum;i++){
            System.out.println("第"+(i+1)+"个数为:");

            Scanner num=new Scanner(System.in);

            listElem[i]=num.nextInt();  

            }

}



//清空顺序表
public void clear(){     

    curNum=0;

    System.out.println("顺序表以清零");

}


//顺序表查找

public static  void Search(int n){

    for(int i=0;i<=listElem.length;i++){

    if(listElem[i].equals(n)){
           int b=0;
            b=i+1;
            System.out.println("你要找的数字在第"+b+"个已找到");
            break;

        }

      }

}


//移除
private static void Remove(int i) {
    // TODO Auto-generated method stub

    if((i<1)||(i>listElem.length)){
        System.out.println("删除不合法");
    }
    for(int j=i;j<listElem.length-1;j++){
        listElem[j-1]=listElem[j];
        curNum--;  //顺序表减一
        }

}


//清除顺序表中多余的元素
public static void Delete(){

    System.out.println("正在清理多余元素");

    for(int i=listElem.length;i<0;i--){

        System.out.println(i);
        if((boolean) listElem[i].equals((int) listElem[i-1])){

            System.out.println(i);

                Remove(i);
            }
        }


    System.out.println("有效元素是:");

    System.out.println(Arrays.toString(listElem));//输出数组

    System.out.println("清除完毕");

    }


public static void main(String[] args)throws Exception {
    System.out.println("创建顺序表:");

    setcurNum(5);
    Build();


    int num=0;
    System.out.println("你想查找的数是:");
    Scanner num1=new Scanner(System.in);
    num=num1.nextInt();
    Search(num);

    Delete();

    num1.close();

}

}
图片说明

int i=listElem.length;i<0;i--,注意循环条件

哥,你for循环的判断条件是i<0啊,怎么会进入循环呀!

试试把Search里的for(int i=0;i<=listElem.length;i++)改为for(int i=0;i<listElem.length;i++)
加等号是多出一位