2016-11-26 3 views
0

Так что у меня этот код:Многомерный массив в связанном списке не работает?

public static void main (String[] args) throws IOException 
{ 
    Queue popcorn = new LinkedList(); 
    BufferedReader in = null; 
    int j = 0; 
    try { 
     File file2 = new File("Events.txt"); 
     in = new BufferedReader(new FileReader(file2)); 

     String str; 
     String [][] process = new String[][]; 
     while ((str = in.readLine()) != null) { 
      String[] arr = str.split(" "); 
      for(int i=0 ; i<str.length() ; i++){ 
      process[j][i] = in.readLine(); 
     } 
      j++; 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      in.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

Это не работает. Он бросает «Variable должен либо обеспечить выражения измерения или массив инициализатору»

Я пытаюсь моделировать его после этого веб-страницы ответа «http://www.chegg.com/homework-help/questions-and-answers/hired-biggy-s-popcorn-handle-popcorn-orders-store-write-java-console-application-reads-dat-q7220573» , который я уверен, не работает. В любом случае этот связанный список, похоже, не работает. Может ли кто-нибудь указать мне в правильном направлении, насколько это связано с объявлением процесса String [] []?

+0

'новой строки [] [] '- это не возможно * * создать массив без размеров, что что говорится в сообщении. Это отдельно от объявления переменной. Поиск сообщений об ошибках для общих подсказок/направлений. – user2864740

+0

Вам необходимо указать размер массива. Прочитайте http://www.java67.com/2014/10/how-to-create-and-initialize-two-dimensional-array-java-example.html – Rohan

ответ

3

Вы не можете просто инициализировать массив без параметров измерения. Например, это недействительно:

int[] array = new int[]; 

Он должен быть инициализирован, как это:

int[] array = new int[10]; 

Или просто:

int[] array; 
// ... // 
array = new int[10]; 

Это то же самое с многомерными массивами. Для того, чтобы создать массив, содержащий 3 массивы размером 5, вы бы поставил:

int[][] array = new int[3][5]; 

Однако с 2D массивов, вы можете также поместить:

int[][] array = new int[3][]; 
array[0] = new int[5]; 
array[1] = new int[7]; 
// ... // 

Дело в том, что вам нужно определить, сколько другие массивы будут в вашем базовом массиве и могут также опционально определять размер всех массивов или просто добавлять их позже. В этом случае вам нужно изменить

String [][] process = new String[][]; 

к чему-то вроде

String [][] process = new String[x][y]; 
+0

Хорошо! Поэтому я буду использовать String [] [] process = new String [15] []; вместо этого? – user7212219

+0

Да, но имейте в виду, что вам нужно будет заполнить базовый массив другими массивами, если вы хотите использовать строку 'process [j] [i] = in.readLine();', которая может быть выполнена установив 'process [j] = arr;'. –