2016-05-24 5 views
1

ich einen String so etwas wie haben:initialisieren ein multidimentional Array in Java eingebaute String mit

String someString=[[((2016, 5, 21, 2, 0, 0), (2016, 5, 23, 7, 0, 0)), [('TASK1', 'DONE'), ('TASK2', 'DONE'), ('TASK3', 'DONE'), ('TASK4', 'DONE'), ('TASK5', 'DONE')]]] 

Ich möchte diese Zeichenfolge verwenden, um ein mehrdimensionales Array zu initialisieren, so dass ich die Werte mit Indizes abrufen können:

array[0] geben soll ((2016, 5, 21, 2, 0, 0), (2016, 5, 23, 7, 0, 0)) array[0][1](2016, 5, 23, 7, 0, 0) und so weiter geben sollte ..

In python, ich war in der Lage, es zu tun einfach die eval f ist aber nicht sicher, wie man es in Java macht.

+0

ein Blick auf [Gibt es einen Java-Äquivalent der Python-Funktion eval?] (Http://stackoverflow.com/questions/7143343/is-there-a-java-equivalent-of -the-python-eval-Funktion) und [Gibt es eine eval() Funktion in Java?] (http://stackoverflow.com/questions/2605032/is-there-an-eval-function-in-java) – Sasha

+0

Verwenden Sie die Methode 'split (delimiter)' der Klasse ** String **. – Cataclysm

+0

@Sasha .. Ich sah schon, dass Post, aber nicht viel Hilfe gefunden .. –

Antwort

0

Was Sie suchen, scheint ein 3-dimensionales Array zu sein. Deklarieren Sie das Array, indem Sie drei eckige Klammern hinzufügen, und verwenden Sie geschweifte Klammern, um das Ende jedes Arrays anzugeben. Zum Beispiel:

String someString [][][] = { 
      {{"2016", "5", "21", "2", "0", "0"},{"2016", "5", "23", "7", "0", "0"}}, 
      {{"TASK1", "DONE"}, {"TASK2", "DONE"}} 
      }; 

In diesem Fall somestring [0] [0] [0] werden 2016 und somestring [1] [1] [0] TASK2 sein usw.

angezeigten Ein Array in Java ist etwas komplizierter als Python, wobei der Standardweg darin besteht, mehrere For-Schleifen zu verwenden, um jedes Array zu durchlaufen. Zum Beispiel:

 for (int h=0; h<someString.length; h++){ 
     for (int i=0; i<someString[h].length; i++){ 
      System.out.print(someString[h][i][0] + "\t"); 
      for (int j=0; j<someString[h][i].length; j++){ 
       System.out.print(someString[h][i][j]+"\t"); 
      } 
      System.out.println(); 
     } 
    } 
+0

Dieses Beispiel wird funktionieren, wenn ich meine eigene Zeichenfolge deklarieren kann Array, aber ich bekomme eine Zeichenfolge anstelle von String-Array, also wie konvertiere ich diese Zeichenfolge in die 3D-String-Array Sie erwähnt ?? –

+0

In diesem Fall müssen Sie Code schreiben, um die Zeichenfolge zu analysieren und mehrdimensionale Arrays selbst zu erstellen. Es gibt keinen direkten Weg, dies zu tun. Veröffentlichen Sie das genaue Format der Zeichenfolge oder einige Beispielzeichenfolgen. Vielleicht können wir uns einen einfachen Algo einfallen lassen. –

+0

Wenn es keinen direkten Weg gibt, dann werde ich mit Parsing-the-String-Ansatz gehen ... –

Verwandte Themen