「テキストファイルから2つの行列データを読み込み二次元配列に保存したものを表示する」プログラムを
codeの欄のように作成しました
このプログラムは行列A、Bそれぞれについて
getRow、getColumメソッドにより指定されたファイルから1行読み込み、行(row)と列(col)の数を取得する
readメソッドにより以降の行も順に読んでいき、二次元配列に保存する
printメソッドにより表示を行う
といった流れのプログラムです
テキストファイルの例(スペース区切り)
3 3 ←行と列の数を表す
0.11 0.03 0.1 ←以下行列の要素
0.2 0.22 0.66
0.4 0.56 0.09
readメソッドにおける戻り値をどのように書けばよいのかが分からないので教えてもらいたいです
はじめにcodeのプログラムのようにしてコンパイルすると
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Matrix.java:51: エラー: 不適合な型: double[][]をMatrixに変換できません:
return matrix;
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
↑このようなエラーが表示されました
readメソッドの型と戻り値の型が違うというのは理解できましたが
保存した二次元配列の内容を
どのようにMatrix型の戻り値として書けば良いのかが分かりません
教えていただけるとありがたいです
※情報追加・修正依頼について回答させていただきました
java
1import java.io.*; 2import java.io.FileInputStream; 3import java.io.InputStreamReader; 4public class Matrix{ 5 private int row,col; 6 private double[][] matrix = new double [row][col]; 7 8 public Matrix(){ 9 } 10 public Matrix(int M,int N){ 11 this.row=M; 12 this.col=N; 13 } 14 public int getRow(String filename){ 15 BufferedReader br = new BufferedReader(new FileReader(filename)); 16 String rline = br.readLine(); 17 String[] R = rline.split("\s"); 18 int m = Integer.parseInt(R[0]); 19 return m; 20 } 21 public int getColumn(String filename){ 22 BufferedReader br = new BufferedReader(new FileReader(filename)); 23 String cline = br.readLine(); 24 String[] C = cline.split("\s"); 25 int n = Integer.parseInt(C[1]); 26 return n; 27 } 28 public Matrix read(String filename){ 29 try (BufferedReader br = new BufferedReader(new FileReader(filename))){ 30 String[] rowcol = br.readLine().split(" "); 31 String line = null; 32 int M=0; 33 while (M < row && (line = br.readLine()) != null){ 34 String[] record = line.split(" "); 35 for (int N = 0; N < col ; N++) { 36 matrix[M][N] = Double.parseDouble(record[N]); 37 } 38 M++; 39 } 40 print(); 41 } 42 catch (FileNotFoundException e) { 43 e.printStackTrace(); 44 } 45 catch (IOException e) { 46 e.printStackTrace(); 47 } 48 catch (NumberFormatException e) { 49 e.printStackTrace(); 50 } 51 return matrix; //質問している部分 52 } 53 public void print(){ 54 for(int i = 0; i<row; i++){ 55 for(int j = 0; j<col; j++){ 56 System.out.println(matrix[i][j]); 57 } 58 } 59 } 60 public void main(String[] args){ 61 if (args.length != 2) { 62 System.out.println("need two files"); 63 System.exit(1); 64 } 65 int arow,acol,brow,bcol; 66 Matrix x = new Matrix(); 67 arow=x.getRow(args[0]); 68 acol=x.getColumn(args[0]); 69 brow=x.getRow(args[1]); 70 bcol=x.getColumn(args[1]); 71 Matrix y = new Matrix(arow,acol); 72 Matrix A = y.read(args[0]); 73 Matrix z = new Matrix(brow,bcol); 74 Matrix B = z.read(args[1]); 75 } 76} 77