2011-07-12 71 views
-1

我目前正在爲類創建項目,以創建一個TextLine類,該類表示必須表示爲字符數組的文本行。如何在Java中爲char數組創建追加方法

對於其中一種方法,我應該將字符串作爲參數的參數,然後將該字符串附加到我已經創建的字符數組中。

我試圖在網上搜索我如何做到這一點,甚至是一個顯示實現的String或StringBuffer類的示例,但由於我在Google的新手技能,我無法真正找到任何有用的東西。

我在想什麼是我首先必須將字符串轉換爲數組,然後以某種方式使用其中一種數組方法將每個字符單獨添加到char數組中。

這是我有:

public void append(String fragment){ 

    char[] temp = fragment.toCharArray(); 

} 

我不太清楚,可以用什麼陣列的方法,如果有,即使是其中之一。有人可以幫我嗎?

+0

是您的最終目標附加條件?你可以用+操作符來做到這一點。使用toCharArray的問題是該字符串可以包含UTF代碼點,這些代碼點使用多個字節表示。不知道編碼,你的字節是沒用的。 – jackrabbit

+0

@thinhtvu:爲什麼你試圖刪除接受的答案中的代碼(通過嘗試編輯)?這個行動坦率地說很臭。恥辱你和-1。版主已被標記。 –

+0

所有注意到原始海報也試圖刪除Toader Mihai Claudiu的答案*中發佈的代碼,他接受*。 –

回答

2

通常情況下,您會使用StringBuilder作爲班級的內部存儲空間,但我認爲您需要了解如何做到這一點的基本細節。

的基本過程是這樣的:

  • 分配一個新的數組與新數據的舊數組+大小的大小
  • 舊數據複製到新的數組
  • 複製新在新的數組的末尾
  • 集此作爲實際數據

這裏數據是代碼(這個假定data成員聲明如下:char[] data = new char[0]

public void append(String fragment) { 
     char[] fragmentChars = fragment.toCharArray(); 
     char[] newData = new char[data.length + fragmentChars.length]; 

     System.arraycopy(data, 0, newData, 0, data.length); 
     System.arraycopy(fragmentChars, 0, newData, data.length, fragmentChars.length); 

     data = newData; 
    } 
2

假設您的原始char[]數組被稱爲arr。然後,你可以這樣做:

public void append(String fragment){ 
    arr = (new String(arr)+fragment).toCharArray(); 
} 

這是你char[]數組轉換爲String,所以你可以使用+操作者只需串連,爲fragment。然後,您只需使用toCharArray()將新的String轉換回char[]陣列。

1

您可以使用System.arraycopy方法將一個數組的內容複製到另一個數組中。我將把它作爲練習來弄清細節。

0

作爲替代方案,你可以嘗試一個稍微簡單的方法:

public class Test{ 
char[] arr; 

public static void main(String[] args){ 
    Test t = new Test(); 
    t.arr = "hi ".toCharArray(); 
    t.append(" and bye"); 
    System.out.print(new String(t.arr)); 
} 

public void append(String myString){ 
    char[] toAppend = myString.toCharArray(); 
    char[] newArr = new char[toAppend.length+arr.length]; 
    for(int i = 0; i < arr.length; i++) 
     newArr[i] = arr[i]; 
    for(int i = 0; i < toAppend.length-1; i++) 
     newArr[i+arr.length] = toAppend[i]; 
    arr = newArr; 
} 
}