前提・実現したいこと
自分で定義した型(Matrix)の配列をA,Bと二つ生成したい
発生している問題・エラーメッセージ
下記のread関数のreturn部分で「double[][]からMatrix型には変換できません」と表示され,同じくread関数のthis.m[row][col] = {{2,3},{2,2}}; 部分で「構文エラーです」と表示される.
該当のソースコード
Matrix.java
1import java.io.BufferedReader; 2import java.io.FileReader; 3 4public class Matrix { 5 6 private int row; /* 行列の列 */ 7 private int col; /* 行列の行 */ 8 private double[][] m = new double[row][col]; /* 使用する行列 */ 9 10 public Matrix(){ /* コンストラクタ */ 11 this.m = new double[row][col]; 12 } 13 public Matrix read(String file) { /* ファイルから読み込んで行列を生成する */ 14 try { 15 BufferedReader br = new BufferedReader(new FileReader(file)); 16 String line; 17 this.row=2; /* 適当に代入 */ 18 this.col=2; /* 適当に代入 */ 19 20 21 while ((line = br.readLine()) != null){/* 行単位で処理 */ 22 /* 処理は省略 */ 23 24 } 25 26 27 this.m[row][col] = {{2,3},{2,2}}; /* 試しに適当に代入(この部分でエラーが出る) */ 28 29 30 return m; /* この部分でエラーが出る */ 31 } 32 catch(Exception e){ 33 e.printStackTrace();/* エラー処理 :トレース*/ 34 return m; 35 } 36 } 37 38 public static void main(String[] args) { 39 String file1; 40 String file2; 41 42 file1=args[0]; 43 file2=args[1]; 44 45 Matrix instance = new Matrix(); 46 Matrix A = instance.read(file1); 47 Matrix B = instance.read(file2); 48 49 } 50 51 52} 53
試したこと
本来であればファイルからスペースで区切られた行列の値を読み込んで生成したいのですが,ひとまずその処理は省略して適当にrow,col,m[][]に代入しています.
//追記
コンストラクタでのthis.m = new double[row][col];のrow,colには0が入っているから改めてmを初期化する必要がある…というところまで分かったのですが,read(String)の返り値としてMatrix型の変数は何を指定してやればよいのかわかりません.mはdouble型であってMatrix型でないならば何を返せばよいのでしょうか?
補足情報(FW/ツールのバージョンなど)
eclipse 2019のjava10を使用しています
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/11 17:32