2013-03-29 55 views
0

你好我是Java新手,我遇到了麻煩。刪除字符串數組中的位置

我的程序在Jframe中打印字符串。我生成一個名爲v的字符串數組。v [0]始終爲空。我要求用戶輸入刪除數組v的一個位置,我稱之爲numberdel。如果我有一個數組

v [0] = [零] V [1] = [你好] V [2] = [我的名字是】V [3] = [約翰]和如果 numberdel = 2

最終的結果應該是

v [0] = [零] v [1] = [你好] v [2] = [約翰]

我沒不要這樣做,所以我創建了一個名爲b的新數組。但它仍然不能正常工作像通緝......

public static 
(...) 

String[] b = new String[v.length-1]; 

boolean jump = false; 

for(int j=1; j<b.length; j++){ 
    if(jump==false){ 
     if(j != numberdel){ 
      b[j] = v[j]; 
     } 
     else jump = true; 
    } 
    else{ 
     b[j] = v[j+1]; 
    } 
    (...)//action for every cycle 
} 
(...) 
+0

簡單,你可以做這樣的事情......在單個陣列只是交換與numberdel + 1個值numberdel並設置numberdel + 1爲空......但一旦你掉他們,你需要交換的下一個價值也 –

回答

0

j == numberdel,你的循環將設置jumptrue和剛好跳過else聲明。

我建議不要使用jump變量,因爲在j < numberdel時它基本上是錯誤的,否則就是true。

for(int j = 1; j < b.length; j++) 
{ 
    if (j < numberdel) 
     b[j] = v[j]; 
    else 
     b[j] = v[j + 1]; 
} 
0

,你可以做你的任務單陣列本身......如在下面......

void delet(int numberdel) 
{ 
    for(int i=numberdel ; i< v.length ;i++) 
     v[i] = v[i+1]; 

} 

我建議,如果你能做到同樣的事情在一個數組,那麼爲什麼要浪費空間...你正在做的事情很好,但我想這是更好的...希望它適用於你...

0

使用System.arrayCopy開始與數組vnumberdel是要刪除的基於0的項目。

String[] b = new String[v.length-1]; 

System.arrayCopy(v, 0, b, 0, numberdel); 
System.arrayCopy(v, numberdel + 1, b, numberdel, v.length - numberdel); 
相關問題