2014-02-22 88 views
1

我有以下一段代碼,在這段代碼中,我想根據String數組的長度將String數組轉換爲動態生成的char數組。我的方法/技術是可行的,或者我必須選擇其他數據類型...實際上,我必須對每個字的每個字符執行邏輯,這就是爲什麼我打破了字符串數組到字符[]數組....在Java中將String []數組轉換爲動態char []數組?

private String[] function(String[] words) { 
    String[] names = words; 

    char[] CArray= null; 

    for (int i = 0; i < names.length ; i++){ 
     CArray = names[i].toCharArray(); 
    } 

    for (int i = 0; i < CArray.length ; i++){ 
     System.out.print(CArray[i]); 
    } 

    return names;   
} 

夥計們試着站在我想根據字符串數組的長度在序列quto中生成char []數組的名稱意味着如果有4個字有名稱,則應該有4個char []數組以S0,S1,S2,S3或其他的順序排列.. !!!!!

好吧夥計plz這是我想實現的
char [] S1或anyname = words [0] .toCharArray();
char [] S2或anyname = words [1] .toCharArray();
等等...取決於傳遞的字符串數組的數量,這樣我就可以用char []數組S1,S2,S3來執行我的進一步操作.....現在找出它。 。!希望我明確瞭解問題.. ??

+1

爲什麼不使用String類提供的charAt方法來訪問它的每個字符? –

+0

你可以顯示@AwfullyAwesome如何做到這一點..!嘗試了幾種東西兄弟現在我有fed_up ..! – Gurjit

+0

好的,你想要這個功能是做什麼的?一旦你告訴我,我會寫它的代碼,以顯示它的完成情況。 –

回答

0

你想要的是把字符串數組中的每個字符放到char數組中。

如果是這樣,你有幾種方法來做到這一點。

爲避免使用數組列表(增加它的容量),必須知道字符串數組中每個索引內的字符數量,通過每個索引添加字符數量到您之前擁有的變量聲明(讓我們稱爲sumChar),然後創建一個容量等於sumChar char [] Carray = new chat [sumChar]的char數組。

然後做這樣的事情 int indexPos = 0;

for (int i=0;i<names.length;i++) 
{ 
    for (int c=0;c<names[i];length;c++) 
    { 
      Carray[indexPos++]=names[i].charAt(c); 
    } 
} 

這一切,上面我做到了沒有測試過它,所以任何問題隨時代碼問

0

我認爲這是你在找什麼:

private static char[] stringArrayToCharArray (String[] words) { 
    int arrayLength = 0; 

    // Calculate the total size of the char array by adding the strings sizes 
    for (final String word : words) 
     arrayLength += word.length(); 

    // Create the char array 
    char[] charArray = new char[arrayLength]; 

    int arrayIndex = 0; 

    // Fill the array 
    for (final String word : words) 
     for (int i=0; i<word.length(); i++) 
      charArray[arrayIndex++] = word.charAt(i); 

    return charArray;   
} 

這裏如何使用它:

String[] strs = {"test", "other"}; 
char[] chars = stringArrayToCharArray(strs); 
0

恐怕這還沒有結束..你是否執行了代碼並查看其結果?

  1. 爲了不被尼特採摘,但這是有點重要:在Java中的變量名以小寫開頭,所以CARRAY代替CARRAY的。節省讀者很多困惑(這是一個變量嗎?它是一個類嗎?等等)。

  2. 這條線的目的是什麼?爲什麼不使用文字?

    String [] names = words;

  3. 下面的代碼導致CArray成爲包含最後一個單詞的字符數組。除最後一個字以外的所有其他字都被丟棄。

for (int i = 0; i < names.length ; i++){ CArray = names[i].toCharArray();

也許你的意思是嵌套在第二循環進入第一循環的身體?

  1. 然後你正在返回names,而這恰恰是相同words,沒有字符數組那裏。可能你想function返回一個字符數組的數組?

  2. 我不確定你是否真的想轉換成一個char數組數組,而不是像使用StringBuffer或正則表達式那樣。 Java中的大多數文本操作都是這樣完成的。

陷入編碼之前,我建議學習更多..

+0

是的當然,,我知道,這些單詞在函數中有更多的作用...... !!我實際上希望輸出像char [] name = words [0]和char [] name1 = words [1] ,,,表示要根據字符串數組的長度自動生成的char數組的名稱..這應該是我的輸出.. !! char數組中的動物名字.. ?? – Gurjit

+0

你的意思是,你希望你的標準輸出格式化爲Java代碼?爲什麼? Java不是一種動態語言,所以你不能在運行時創建任意的動態變量。如果你打算生成Java代碼然後執行它,你需要先編譯它..不知道我是否正確理解你! – Ruby

0

這裏有一個程序,然後以證明你問:

public class CharArray { 

public CharArray() { 
    String[] words = { "First", "Second" }; 

    for (String word : words) { 
     for (char character : word.toCharArray()) { 
      System.out.print(character + " "); 
     } 
     System.out.println(); 
    } 
} 

public static void main(String[] args) { 
    new CharArray(); 
} 
} 

目前的字陣中的話會一一道來到構造函數中的character變量。在那裏做任何你想做的事情。

希望它有幫助。

+0

是否有可能在循環中給出2個計數器初始值.. ?? – Gurjit

+0

是的,可以在循環中給出多個初始化,需要用逗號分隔。您甚至可以使用&&,||編寫多個由逗號分隔的更新表達式,以及多個條件運營商。 –

+0

下面是一個例子:'for(int i = 0,j = 100; i < 10 && j > 10; i ++,j- = 2){//用i和j做一些瘋狂的事情} –