2016-11-26 8 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(); 
     } 
    } 

} 

それは動作しません。それは私がこのウェブページの答え「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

'新しいString [] []'のようなものに

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

を変更する必要がありますメッセージが言っていること。これは変数宣言とは別です。一般的なヒント/指示のエラーメッセージを検索します。 – 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]; 

それは多次元配列と同じことです。サイズ5の3つの配列を含む配列を作成するには、入れてしまうでしょう:

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[x][y]; 
+0

を読んでください。だから私はString [] [] process = new String [15] [];を使用します。代わりに正しい? – user7212219

+0

はい、行 'process [j] [i] = in.readLine();'を使用する場合は、ベース配列に他の配列を設定する必要があることに注意してください。 'process [j] = arr;'を設定してください。 –