簡體   English   中英

刪除數組[]個元素

[英]delete array [] elements

我正在研究一些數據結構-搜索元素后,我試圖刪除該元素-但拋出

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at SearchArray.deleteElements(SearchArray.java:68)
    at SearchArrayDemo.main(SearchArrayDemo.java:25)

這是我的方法

void deleteElements(int value)
{
    int j,k;

    for (j=0;j<setArray.length;j++)

        if ( value == setArray[j])

        break;
        if
            (setArray[j] == setArray.length)

            System.out.print("no item found");
        else
        {
            for( k=j;k<setArray.length;k++)

                `setArray[k]=setArray[k+1];`

            k=setArray.length-1;
            setArray[j]=0;

        System.out.println("item deleted");
        }`

和用於調用該函數的主要方法deleteElements

sa.deleteElements(5);

為了簡潔,我沒有包括所有代碼,這是代碼中斷的行

setArray[k]=setArray[k+1];

請讓我知道是否需要其余代碼。 感謝你的幫助。

這里的問題是您的循環結束條件是

k<setArray.length

,但隨后您使用

setArray[k+1]

將條件更改為

k < setArray.length - 1
for( k=j;k<setArray.length;k++)

setArray[k]=setArray[k+1]; \\ K+1 (invalid index when k = setArray.length-1

在您的代碼中,這對於最后一個元素將失敗。 因此,您會得到例外

在Array中,最后一個索引是Array.length-1 對於您的最后一個元素,代碼將失敗,因為k=Array.length-1 (最后一個索引)並且k+1 = Array.length (不存在)。 因此,它拋出了異常。

您的第一個for循環有一些死代碼:

if(setArray[j] == setArray.length)
  System.out.print("no item found");

for (j=0;j<setArray.length;j++)在循環中永遠不會達到此條件

問題是此代碼段:

for( k=j;k<setArray.length;k++)
           setArray[k]=setArray[k+1];

k == setArray.length - 1setArray[k+1]超出了setArray的邊界

如果你想刪除數組4中的元素

 class arrayserch{
 public int value(){
   int[] arr={1,2,3,4,5,6;
     int i=0;
     for(int a:arr){
     if(a==4){
     return i;
   }
  else
  i++;

  }
return=-1;
 }
 }





     class example{
      public static void main(string arags[]){
     arrsearch as=new arrrsearch();
      int i=as.value();
       if(i!=-1){
       arr.length--;
       for(int j=i;j<arr.length;j++)
       {
         arr[j]=arr[i++];

           }
         }
         }


this may solve ur problem

我不知道你的代碼,但行

setArray[k]=setArray[k+1];

出界數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM