2017-05-21 13 views
0

こんにちは、私は比較的Javaには新しく、特定のファイル形式を2D配列に解析する方法を知りたいと思っています。特定のファイル形式のファイルを解析する

ファイル形式は、値を<で区切ってカンマで区切って、追加の値のセットを区切ります。

<a,b,c/><x,y,z> 
<... 
<... 

各行は配列[] []に入力され、最初のセットは最初の列に入り、次のセットは2番目の列に入ります。

このように出力する必要があります。

a, b, c 
x ,y ,z 
... 

ご協力いただきありがとうございます。

EDIT:これは私がこれまでに

public static main (String args[]) 
{ 
    //Open file, read to get number of lines of file = numLine 

    int[][] array = new int[numLine][numLine] 

    for (int i = 0; i < numLine; i++) 
    { 
     //Unsure how to write element/line split 
     array[i][i] = //input each element to array 
     } 
    } 
} 
+2

これまでに何を書いていますか? –

+0

広すぎると投票しました。これに取り組むには数十の方法があります。ほとんどの入門Javaの書籍は、多くの場合、最初の5つの章で適切なアプローチをいくつか提供します。 – slim

答えて

0

@Youngミリーは、あなたがこれまで試みられてきたものを、指摘しているように持っているものでしょうか?つまり、いくつかのアプローチがありますが、そのうちの1つは次のとおりです。

有効な試みが(さらにin their java docsを説明している)replaceAll(...)を使用して、シンボルのすべての出現を、その後、行毎にファイルを読み込む取り除くことであろうが、代わりに、あなたは使用することができ、次の置き換え:

String line = "<a,b,c/><x,y,z>"; 
line = line.replaceAll("[<>]", ""); 
System.out.println("1. " + line); 

1. a,b,c/x,y,z 

し、我々はあなたに必要な文字列の2列にその結果、「/」で文字列を分割分割:

01の結果結果と

:あなたは、あなたのニーズに合わせて、これを変更することができ

1. a,b,c 
2. x,y,z 
1

。私はいくつかのコメントを追加したので、あなたはそれらに注意を払いたいかもしれません。

Scanner sc = new Scanner(file); 

    String[][] array = new String[numLine][numLine];//declaring the matrix 

    int r=0 , c=0;//declaring the index of the matrices column and row 

    while (sc.hasNextLine()) { 
     String line = sc.nextLine(); 
     line = line.replaceAll("[<>]", "");//removing > and < so we gonna have a,b,c/x,y,z 
     String[] col = line.split("/");// spliting using/and we gonna have a,b,c x,y,z 

     for (String row : col) { 
      //a,b,c or x,y,z 
      String[] oneCol = row.split(","); 
      for (String oneRow : oneCol) { 
       if(c >= numLine){ 
        c = 0; 
        break; 
       } 
       array[r][c] = oneRow; 
       c++; 
      } 
      r++; 
      //System.out.println(); 
     } 
     c = 0; 

    } 

    sc.close(); 
関連する問題