• 締切済み

文書を読み込み配列に格納

質問のタイトル通りなのですが、Javaプログラミングで 例えば、 1.2;2.3;1.0; 5.3;0.3;0.5; 1.4;4.2;2.2; といった3行の文書があるとして、この文書を読み込み、配列d[3][3] に格納するにはどのようにすればよいでしょうか。 d[0][0]=1.2、d[0][1]=2.3、d[0][2]=1.0、d[1][0]=5.3といった具合に 格納したいのです。数値はdouble型で格納しようしています。 とりあえず、 BufferedReader br = new BufferedReader(new FileReader("○○")); で読み込み、 String str = null; String[] str1 = null; String regex = ";"; を用意しておいて、 while((str = br.readLine()) != null){ str1 = str.split(regex); } で数値を分割するところまでできています。 ここからString型からDouble型に変換して、d[3][3]に格納したいと 思っていますが、やり方がよくわかりません。 よろしくおねがいします。

みんなの回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.2

 二次元の配列を扱う場合は、まず一次元の配列を入れるための配列を作り、 その配列に入る一次元配列を個別に作っていくことになります。 文字列をdoubleに変換するには、DoubleクラスのparseDoubleスタティックメソッドを使います。  以下がその例です。 import java.io.*; public class readarray { public static void main(String args[]) { try { BufferedReader br = new BufferedReader(new FileReader(args[0])); String str = null; String[] str1 = null; String regex = ";"; double d[][]; d = new double[3][]; int i = 0, j; while((str = br.readLine()) != null) { str1 = str.split(regex); d[i] = new double[str1.length]; for (j = 0; j < str1.length; j ++) { try { d[i][j] = Double.parseDouble(str1[j]); } catch (Exception e) { d[i][j] = 0.0; }; }; i ++; if (i >= d.length) break; }; br.close(); for (i = 0; i < d.length; i ++) { for (j = 0; j < d[i].length; j ++) System.out.print(Double.toString(d[i][j]) + " "); System.out.println(""); }; } catch (Exception ex) { System.out.println(ex.toString()); }; }; }

  • mak22
  • ベストアンサー率38% (15/39)
回答No.1

どこが分からないのでしょうか? (1) String型からDouble型の変換の仕方 (2) 配列の格納の仕方 (1)は参考リンクをご覧ください。キャストというものが必要になってきます。 (2)は、まずdouble型の配列を宣言しますよね。これに値をひとつずつ入れるのですからループでstr1で取り出した値を入れてあげてください。ヒントは二重ループです。

参考URL:
http://www.viste.com/Java/Language/language3.html

関連するQ&A