[英]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 - 1
, setArray[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.