teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

より詳細な質問を行うため

2021/07/05 08:44

投稿

soft_cream
soft_cream

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,14 @@
1
+ 追記2
2
+ 教えていただいたことを参考に
3
+ getterやsetterを書き加えました
4
+ まだ正しく記述できておらず、コンパイルエラーが出ている状態のため
5
+ 修正の方法についてお聞きしたいです
6
+
7
+
8
+ 追記1
1
- 最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。
9
+ 最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。
2
-  続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。
10
+ 続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。
3
-  修正後のプログラムには以下のようなエラーが表示されました。
11
+ 修正後のプログラムには以下のようなエラーが表示されました。
4
12
  ーーーーーーーーーーーーーーーーー
5
13
  Matrix.java:39: エラー: シンボルを見つけられません
6
14
  matrix.print();
@@ -197,4 +205,94 @@
197
205
  B = z.read(args[1]);
198
206
  }
199
207
  }
208
+ ```
209
+ ```java
210
+ //getterやsetterを利用した形
211
+ import java.io.*;
212
+ import java.io.FileInputStream;
213
+ import java.io.InputStreamReader;
214
+ public class Matrix{
215
+ private int row,col;
216
+ public Matrix(){
217
+ }
218
+ public Matrix(int M,int N){
219
+ this.row=M;
220
+ this.col=N;
221
+ }
222
+ private double[][] matrix = new double [row][col];
223
+ public int getRow(String filename){
224
+ BufferedReader br = new BufferedReader(new FileReader(filename));
225
+ String rline = br.readLine();
226
+ String[] R = rline.split("\s");
227
+ int m = Integer.parseInt(R[0]);
228
+ return m;
229
+ }
230
+ public int getColumn(String filename){
231
+ BufferedReader br = new BufferedReader(new FileReader(filename));
232
+ String cline = br.readLine();
233
+ String[] C = cline.split("\s");
234
+ int n = Integer.parseInt(C[1]);
235
+ return n;
236
+ }
237
+ public Matrix read(String filename){
238
+ try (BufferedReader br = new BufferedReader(new FileReader(filename))){
239
+ String[] rowcol = br.readLine().split(" ");
240
+ String line = null;
241
+ int M=0;
242
+ while (M < row && (line = br.readLine()) != null){
243
+ String[] record = line.split(" ");
244
+ for (int N = 0; N < col ; N++) {
245
+ matrix[M][N] = Double.parseDouble(record[N]);
246
+ }
247
+ M++;
248
+ }
249
+ print();
250
+ }
251
+ catch (FileNotFoundException e) {
252
+ e.printStackTrace();
253
+ }
254
+ catch (IOException e) {
255
+ e.printStackTrace();
256
+ }
257
+ catch (NumberFormatException e) {
258
+ e.printStackTrace();
259
+ }
260
+ }
261
+ public void print(){
262
+ for(int i = 0; i<row; i++){
263
+ for(int j = 0; j<col; j++){
264
+ System.out.println(matrix[i][j]);
265
+ }
266
+ }
267
+ }
268
+ public void setmatrix(double[][] MAT) {
269
+ MAT=this.matrix;
270
+ }
271
+ public double[][] getmatrix(){
272
+ return MAT;
273
+ }
274
+ public void main(String[] args){
275
+ if (args.length != 2) {
276
+ System.out.println("need two files");
277
+ System.exit(1);
278
+ }
279
+ int arow,acol,brow,bcol;
280
+ Matrix x = new Matrix();
281
+ arow=x.getRow(args[0]);
282
+ acol=x.getColumn(args[0]);
283
+ brow=x.getRow(args[1]);
284
+ bcol=x.getColumn(args[1]);
285
+ double [ ][ ] A = new double [arow][acol];
286
+ double [ ][ ] B = new double [brow][bcol];
287
+ double [ ][ ] C = new double [acol][brow];
288
+ Matrix y = new Matrix(arow,acol);
289
+ y.read(args[0]);
290
+ y.setmatrix(A);
291
+ A=matrix;
292
+ Matrix z = new Matrix(brow,bcol);
293
+ z.read(args[1]);
294
+ z.setmatrix(B);
295
+ B=matrix;
296
+ }
297
+ }
200
298
  ```

2

2つのプログラムの違いを追記しました

2021/07/05 08:44

投稿

soft_cream
soft_cream

スコア11

title CHANGED
File without changes
body CHANGED
@@ -44,6 +44,7 @@
44
44
 
45
45
 
46
46
  ```java
47
+ //最初の質問に関するプログラム
47
48
  import java.io.*;
48
49
  public class Matrix{
49
50
  private int row,col;
@@ -117,6 +118,7 @@
117
118
  ```
118
119
 
119
120
  ```java
121
+ //次の質問に関するプログラム
120
122
  import java.io.*;
121
123
  import java.io.FileInputStream;
122
124
  import java.io.InputStreamReader;

1

最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。修正

2021/07/04 13:27

投稿

soft_cream
soft_cream

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,21 @@
1
+ ※最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。
2
+  続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。
3
+  修正後のプログラムには以下のようなエラーが表示されました。
4
+ ーーーーーーーーーーーーーーーーー
5
+ Matrix.java:39: エラー: シンボルを見つけられません
6
+ matrix.print();
7
+ ^
8
+ シンボル: メソッド print()
9
+ 場所: タイプdouble[][]の変数 matrix
10
+ Matrix.java:74: エラー: 不適合な型: Matrixをdouble[][]に変換できません:
11
+ A = y.read(args[0]);
12
+ ^
13
+ Matrix.java:76: エラー: 不適合な型: Matrixをdouble[][]に変換できません:
14
+ B = z.read(args[1]);
15
+ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
16
+
17
+ ※以下最初の質問の内容
18
+
1
19
  「テキストファイルから行列データを読み込み二次元配列に保存したものを表示する」プログラムを作成、
2
20
  コンパイルしたところ
3
21
  以下のようなエラーメッセージが表示されました。
@@ -96,4 +114,85 @@
96
114
  Matrix B = x.read(args[1]);
97
115
  }
98
116
  }
117
+ ```
118
+
119
+ ```java
120
+ import java.io.*;
121
+ import java.io.FileInputStream;
122
+ import java.io.InputStreamReader;
123
+ public class Matrix{
124
+ private int row,col;
125
+ public Matrix(){
126
+ }
127
+ public Matrix(int M,int N){
128
+ this.row=M;
129
+ this.col=N;
130
+ }
131
+ private double[][] matrix = new double [row][col];
132
+ public int getRow(String filename){
133
+ BufferedReader br = new BufferedReader(new FileReader(filename));
134
+ String rline = br.readLine();
135
+ String[] R = rline.split("\s");
136
+ int m = Integer.parseInt(R[0]);
137
+ return m;
138
+ }
139
+ public int getColumn(String filename){
140
+ BufferedReader br = new BufferedReader(new FileReader(filename));
141
+ String cline = br.readLine();
142
+ String[] C = cline.split("\s");
143
+ int n = Integer.parseInt(C[1]);
144
+ return n;
145
+ }
146
+ public Matrix read(String filename){
147
+ try (BufferedReader br = new BufferedReader(new FileReader(filename))){
148
+ String[] rowcol = br.readLine().split(" ");
149
+ String line = null;
150
+ int M=0;
151
+ while (M < row && (line = br.readLine()) != null){
152
+ String[] record = line.split(" ");
153
+ for (int N = 0; N < col ; N++) {
154
+ matrix[M][N] = Double.parseDouble(record[N]);
155
+ }
156
+ M++;
157
+ }
158
+ matrix.print();
159
+ }
160
+ catch (FileNotFoundException e) {
161
+ e.printStackTrace();
162
+ }
163
+ catch (IOException e) {
164
+ e.printStackTrace();
165
+ }
166
+ catch (NumberFormatException e) {
167
+ e.printStackTrace();
168
+ }
169
+ }
170
+ public void print(){
171
+ for(int i = 0; i<row; i++){
172
+ for(int j = 0; j<col; j++){
173
+ System.out.println(matrix[i][j]);
174
+ }
175
+ }
176
+
177
+ }
178
+ public static void main(String[] args){
179
+ if (args.length != 2) {
180
+ System.out.println("need two files");
181
+ System.exit(1);
182
+ }
183
+ int arow,acol,brow,bcol;
184
+ Matrix x = new Matrix();
185
+ arow=x.getRow(args[0]);
186
+ acol=x.getColumn(args[0]);
187
+ brow=x.getRow(args[1]);
188
+ bcol=x.getColumn(args[1]);
189
+ double [ ][ ] A = new double [arow][acol];
190
+ double [ ][ ] B = new double [brow][bcol];
191
+ double [ ][ ] C = new double [acol][brow];
192
+ Matrix y = new Matrix(arow,acol);
193
+ A = y.read(args[0]);
194
+ Matrix z = new Matrix(brow,bcol);
195
+ B = z.read(args[1]);
196
+ }
197
+ }
99
198
  ```