2016-09-29 171 views
0

我已經看到相同標題的其他問題,但它不是同一個問題。 我想將包含在數組中的字符串轉換爲數組本身。如何將字符串轉換爲數組中的字符串數組

所以我有這樣的:

String str = "hello"; 

那我能轉成一個字符串數組與此:

String[] arr = str.split(""); 

其中給出{"h", "e", "l", "l", "o"}

所以我比如把它變成一個對象數組,其中每個對象都是一個字符串數組。 這樣我就可以撥打h[0](之前的初始化),如System.out.println(h[0])

我認爲這不是很清楚,因爲我不是英語母語的人,所以我會很樂意提高我的解釋。

編輯:比如我初始化

String[] h = {"* *", 
       "* *", 
       "*****", 
       "* *", 
       "* *"}; 

和所有的先於其他「字母」,最終我想

for (int l=0; l<str.lenght(); l++) { 
    //Do what I explained above which would return the array letter = h (also the array) 
    for (int s=0; s<5; s++) { 
     System.out.println(letter[i]); 
    } 
} 

,並且輸出顯示「你好」的字符打印*由*的char。

+2

你能提供所需的一個或兩個輸入和輸出的爲例你想要做什麼? – emiliopedrollo

+1

那麼你只是在尋找一個雙字符串數組,比如'String [] [] doubeArr;'? – nhouser9

+1

你不能用Java來做到這一點。 (請參閱http://stackoverflow.com/questions/8631935/creating-a-variable-name-using-a-string-value)。 – azurefrog

回答

0

如果你想要做什麼是把這個:

String = "hello"; 

進入這個:

String[] h; 
String[] e; 
String[] l; 
String[] l; 
String[] o; 

這是無法完成的。 Java在編譯期間需要知道變量的名稱,您不能根據一些隨機輸入來命名新變量。

但是,您可以定義所有可能的字母,然後只返回所需的字母;是這樣的:

輸出 printASCII("Yahbyz");
final String[] LETTER_A = {" * ", " * * ", "*****", "* *", "* *"}; 
final String[] LETTER_B = {"**** ", "* *", "**** ", "* *", "**** "}; 
// ... 
final String[] LETTER_H = {"* *", "* *", "*****", "* *", "* *"}; 
// ... 
final String[] LETTER_Y = {"* *", " * * ", " * ", " * ", " * "}; 
final String[] LETTER_Z = {"*****", " * ", " * ", " * ", "*****"}; 

public void printASCII(String s) { 
    for (String c : s.toUpperCase().split("")) { 
     switch(c) { 
      case "A": 
       for (int i = 0; i < LETTER_A.length; i++) { 
        System.out.println(LETTER_A[i]); 
       } 
       System.out.println(); 
       break; 
      case "B": 
       for (int i = 0; i < LETTER_B.length; i++) { 
        System.out.println(LETTER_B[i]); 
       } 
       System.out.println(); 
       break; 
      // ... 
      case "H": 
       for (int i = 0; i < LETTER_H.length; i++) { 
        System.out.println(LETTER_H[i]); 
       } 
       System.out.println(); 
       break; 
      // ... 
      case "Y": 
       for (int i = 0; i < LETTER_Y.length; i++) { 
        System.out.println(LETTER_Y[i]); 
       } 
       System.out.println(); 
       break; 
      case "Z": 
       for (int i = 0; i < LETTER_Z.length; i++) { 
        System.out.println(LETTER_Z[i]); 
       } 
       System.out.println(); 
       break; 
     } 
    } 
} 

* * 
* * 
    * 
    * 
    * 

    * 
* * 
***** 
* * 
* * 

* * 
* * 
***** 
* * 
* * 

**** 
* * 
**** 
* * 
**** 

* * 
* * 
    * 
    * 
    * 

***** 
    * 
    * 
* 
***** 
+0

謝謝我會試試這個,但是我在Java中很新,所以我必須在'public static void main'或其他地方寫這段代碼嗎? –

+0

這取決於你。也許你想看看關於[如何編寫Java程序](http://stackoverflow.com/documentation/java/84/java-overview)或谷歌一些Java教程的文檔部分。此外,如果您認爲我的回答如上所述對您有幫助,那麼如果您也接受了它,那也會很好。 – walen

+0

是的,我即將這樣做,我只是想先測試一下。 謝謝你的回答! –

0

我試着在這裏瞭解你的心思,但:

char S[][] = new char[20][]; 

S[0] = "hello".toCharArray(); 
S[1] = "anotherstring".toCharArray(); 
... 
S[19] = "".toCharArray(); 

System.out.println(S[0][0]); //h 
System.out.println(S[1][5]); //e 
System.out.println(S.length); //20, we have room for 20 strings 
System.out.println(S[19].length); //0 because string S[19] is empty 
System.out.println(String.valueOf(S[0])); //hello 
System.out.println(S[19][0]); //error because string is empty 

或者你可以有一個簡單的字符串數組(String[]),並用功能來訪問單個字符charAt(i)