2015-10-08 88 views
0

我有一個字段一個[]內爲1,5,3,2,4 當我在for循環達到數3我想它(數3)發送到字段的末尾,以便它將具有索引4和其他號碼(2,4)的指標已經是少了一個a[2] = 2, a[3] = 4如何更改字段中的索引?

我怎樣才能做到這一點?它可以是一個例如有100個值的字段。 感謝您的回覆!

我的計劃是這樣的:

for(int i = 0; i < a.length; i++) { 
    if(a[i] == 3) { 
     // i dont know what have to go there 
    } 
} 
+0

你必須使用'Array'或者我們可以利用在溶液中的'ArrayList'? – gonzo

+1

一種解決方案將是使用'System.arraycopy'沿着一個地方移動的所有號碼,然後設置一個'[則爲a.length - 1] = 3'。我同意奇聞趣事,「List」對此更好。有了List,你甚至不需要循環。只要做'list.remove((Integer)3); list.add(3);'。 –

回答

1
int match = 3; 
for(int i = 0; i < a.length; i++) { 
    if(a[i] == match) { 
     a[i] = a[i+1]; 
     a[i+1] = a[i+2]; 
     a[i+2] = match; 
    } 
} 

注意,存在零差錯校驗

[編輯]隨着一些安全(不「需要」的錯誤在這個版本檢查,因爲我只需將整個陣列向左移動一個位置並將匹配變量放在末尾即可。

int match = 3; 
for(int i = 0; i < a.length; i++) { 
    if(a[i] == match) { 
     for int j = i; j < a.length-1; j++) { 
      a[j] = a[j+1]; 
     } 
     a[j] = match; 
     break; 
    } 

    } 
} 

[/編輯]