2013-01-03 57 views
0

我該如何將char數組的值移動到同一個char數組?這裏的一個代碼:Android - 將char數組的值移動到相同的char數組

假設ctr_r1 = 1,

for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++) 
{ 
    letters[ctr_x] = letters[ctr_x]; 
} 

sb.append(letters); 
char[] lettersr1 = sb.toString().toCharArray(); 
sb1.append(lettersr1); 

追加「字母」,然後將其轉換爲字符串,然後將其轉換爲字符數組然後使它爲「lettersr1」值。

我試圖完成的是EUCHARIST這個詞,我需要把HARIST這個詞拿出來放在另一個數組上,並將它稱爲區域1(Porter2干擾算法)。

代碼「ctr_X =(ctr_r1 + 2)」以H開頭直到T.問題是我無法直接傳遞值,所以我試圖更新現有的char數組然後附加它。

我試着這樣做:

char[] lettersr1 = null; 
for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++) 
{ 
    lettersr1[ctr_x] = letters[ctr_x]; 
} 

sb.append(lettersr1); 

,但我的應用程序崩潰,當我做到這一點。請任何幫助。謝謝!

回答

2

我不明白你想要做什麼,但我可以在你的代碼註釋:

letters[ctr_x] = letters[ctr_x]; 

這是一個空操作:它設置了一個數組元素值,它已經擁有的價值。

char[] lettersr1 = null; 
for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++) { 
    lettersr1[ctr_x] = letters[ctr_x]; 

這顯然會導致NullPointerException,因爲您試圖訪問一個null值的數組。您必須初始化陣列才能對其進行修改:

char[] lettersr1 = new char[someLength]; 

附加說明:您應該爲變量選擇更好的名稱。名字應該告訴變量代表什麼,並且他們應該遵守Java命名約定(變量名中沒有下劃線,camelCase)。 ctr_x,ctr_r1lettersr1並不意味着什麼。

編輯:

我還是不知道你想做什麼,你爲什麼不乾脆用substring(),但這裏是如何改造聖體HARIST:

char[] eucharist = "EUCHARIST".toCharArray(); 
    char[] harist = new char[6]; 
    System.arraycopy(eucharist, 3, harist, 0, 6); 
    String haristAsString = new String(harist); 
    System.out.println(haristAsString); 

    // or 

    char[] harist2 = new char[6]; 
    for (int i = 0; i < 6; i++) { 
     harist2[i] = eucharist[i + 3]; 
    } 
    String harist2AsString = new String(harist2); 
    System.out.println(harist2AsString); 

    // or 

    String harist3AsString = "EUCHARIST".substring(3); 
    char[] harist3 = harist3AsString.toCharArray(); 
    System.out.println(harist3AsString); 
+0

數組有修正大小。如果你想將一個由9個字符組成的數組轉換爲一個由6個字符組成的數組,你需要創建一個由6個字符組成的新數組,並將6個字符從第一個數組複製到第二個數組。或者簡單地在第一個字符串上使用substring()來獲得第二個包含你想要的6個字符的字符串。 –

+0

我試圖做的是: 1.將我的示例詞EUCHARIST放到字母[]字符數組中。 2.將HARIST取出並再次放入字母[]數組中,所以 EUCHARIST數組變成HARIST。 3. append(sb。追加(字母))更新的字母[]數組,所以我 可以將其轉換成字符串,然後最後,將其轉換爲字符數組 所以我可以做號4. 4.炭[] lettersr1 = sb.toString ().toCharArray(); 5.顯示lettersr1 –

+0

的值是多少!這就是我需要做的。將我的9個字符數組(EUCHARIST)轉移到HARIST,但是當我傳輸它時會出錯。 對不起,如果我不能清楚解釋。我盡我所能相信我。 謝謝你的add.note。我要修理我的變量namings。 :) –

1

可能因此:

String str = "EUCHARIST"; 
str = str.substring(3); 

和之後toCharArray()或另一個

+0

虐待嘗試解決這個子字符串。感謝您的答覆。 :) –