2016-05-24 2 views
1

У меня есть строка что-то вроде:инициализировать многомерный массив, используя встроенную строку в Java

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

Я хочу использовать эту строку для инициализации многомерного массива, так что я могу получить значение с помощью индексов:

array[0] должен дать ((2016, 5, 21, 2, 0, 0), (2016, 5, 23, 7, 0, 0)) array[0][1] должен дать (2016, 5, 23, 7, 0, 0) и так далее ..

в питона, я был в состоянии сделать это легко с помощью Eval е но не уверен, как это сделать на Java.

+0

Взгляните на [Есть ли Java эквивалент функции питона Eval?] (Http://stackoverflow.com/questions/7143343/is-there-a-java-equivalent-of -the-python-eval-function) и [Есть ли функция eval() в Java?] (http://stackoverflow.com/questions/2605032/is-there-an-eval-function-in-java) – Sasha

+0

используйте метод 'split (delimiter)' класса ** String **. – Cataclysm

+0

@Sasha .. я уже видел это сообщение, но не нашел там никакой помощи .. –

ответ

0

То, что вы ищете, является трехмерным массивом. Объявите массив, добавив три квадратных скобки и используя фигурные скобки, чтобы обозначить конец каждого массива. Например:

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

В этом случае, SomeString [0] [0] [0] будет 2016, и SomeString [1] [1] [0] будет TASK2 и т.д.

Отображение массив в java немного сложнее, чем python, где стандартным способом является использование нескольких циклов для прохождения каждого массива. Например:

 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

Этот пример будет работать, когда я могу объявить свою собственную строку массив, но я получаю строку вместо строкового массива, так как я могу преобразовать эту строку в трехмерный массив строк, о котором вы говорили? –

+0

В этом случае вам придется написать код для синтаксического анализа строки и создания многомерных массивов. Нет прямого способа сделать это. Отправьте точный формат строки или пары строк примера. Может быть, мы можем придумать простой алго. –

+0

, если нет прямого пути, тогда я пойду с помощью синтаксического анализа ... –

Смежные вопросы