質問編集履歴

3

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

2021/07/05 08:44

投稿

soft_cream
soft_cream

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,24 @@
1
+ 追記2
2
+
3
+ 教えていただいたことを参考に
4
+
5
+ getterやsetterを書き加えました
6
+
7
+ まだ正しく記述できておらず、コンパイルエラーが出ている状態のため
8
+
9
+ 修正の方法についてお聞きしたいです
10
+
11
+
12
+
13
+
14
+
15
+ 追記1
16
+
1
- 最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。
17
+ 最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。
2
-
18
+
3
-  続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。
19
+ 続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。
4
-
20
+
5
-  修正後のプログラムには以下のようなエラーが表示されました。
21
+ 修正後のプログラムには以下のようなエラーが表示されました。
6
22
 
7
23
  ーーーーーーーーーーーーーーーーー
8
24
 
@@ -397,3 +413,183 @@
397
413
  }
398
414
 
399
415
  ```
416
+
417
+ ```java
418
+
419
+ //getterやsetterを利用した形
420
+
421
+ import java.io.*;
422
+
423
+ import java.io.FileInputStream;
424
+
425
+ import java.io.InputStreamReader;
426
+
427
+ public class Matrix{
428
+
429
+ private int row,col;
430
+
431
+ public Matrix(){
432
+
433
+ }
434
+
435
+ public Matrix(int M,int N){
436
+
437
+ this.row=M;
438
+
439
+ this.col=N;
440
+
441
+ }
442
+
443
+ private double[][] matrix = new double [row][col];
444
+
445
+ public int getRow(String filename){
446
+
447
+ BufferedReader br = new BufferedReader(new FileReader(filename));
448
+
449
+ String rline = br.readLine();
450
+
451
+ String[] R = rline.split("\s");
452
+
453
+ int m = Integer.parseInt(R[0]);
454
+
455
+ return m;
456
+
457
+ }
458
+
459
+ public int getColumn(String filename){
460
+
461
+ BufferedReader br = new BufferedReader(new FileReader(filename));
462
+
463
+ String cline = br.readLine();
464
+
465
+ String[] C = cline.split("\s");
466
+
467
+ int n = Integer.parseInt(C[1]);
468
+
469
+ return n;
470
+
471
+ }
472
+
473
+ public Matrix read(String filename){
474
+
475
+ try (BufferedReader br = new BufferedReader(new FileReader(filename))){
476
+
477
+ String[] rowcol = br.readLine().split(" ");
478
+
479
+ String line = null;
480
+
481
+ int M=0;
482
+
483
+ while (M < row && (line = br.readLine()) != null){
484
+
485
+ String[] record = line.split(" ");
486
+
487
+ for (int N = 0; N < col ; N++) {
488
+
489
+ matrix[M][N] = Double.parseDouble(record[N]);
490
+
491
+ }
492
+
493
+ M++;
494
+
495
+ }
496
+
497
+ print();
498
+
499
+ }
500
+
501
+ catch (FileNotFoundException e) {
502
+
503
+ e.printStackTrace();
504
+
505
+ }
506
+
507
+ catch (IOException e) {
508
+
509
+ e.printStackTrace();
510
+
511
+ }
512
+
513
+ catch (NumberFormatException e) {
514
+
515
+ e.printStackTrace();
516
+
517
+ }
518
+
519
+ }
520
+
521
+ public void print(){
522
+
523
+ for(int i = 0; i<row; i++){
524
+
525
+ for(int j = 0; j<col; j++){
526
+
527
+ System.out.println(matrix[i][j]);
528
+
529
+ }
530
+
531
+ }
532
+
533
+ }
534
+
535
+ public void setmatrix(double[][] MAT) {
536
+
537
+ MAT=this.matrix;
538
+
539
+ }
540
+
541
+ public double[][] getmatrix(){
542
+
543
+ return MAT;
544
+
545
+ }
546
+
547
+ public void main(String[] args){
548
+
549
+ if (args.length != 2) {
550
+
551
+ System.out.println("need two files");
552
+
553
+ System.exit(1);
554
+
555
+ }
556
+
557
+ int arow,acol,brow,bcol;
558
+
559
+ Matrix x = new Matrix();
560
+
561
+ arow=x.getRow(args[0]);
562
+
563
+ acol=x.getColumn(args[0]);
564
+
565
+ brow=x.getRow(args[1]);
566
+
567
+ bcol=x.getColumn(args[1]);
568
+
569
+ double [ ][ ] A = new double [arow][acol];
570
+
571
+ double [ ][ ] B = new double [brow][bcol];
572
+
573
+ double [ ][ ] C = new double [acol][brow];
574
+
575
+ Matrix y = new Matrix(arow,acol);
576
+
577
+ y.read(args[0]);
578
+
579
+ y.setmatrix(A);
580
+
581
+ A=matrix;
582
+
583
+ Matrix z = new Matrix(brow,bcol);
584
+
585
+ z.read(args[1]);
586
+
587
+ z.setmatrix(B);
588
+
589
+ B=matrix;
590
+
591
+ }
592
+
593
+ }
594
+
595
+ ```

2

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

2021/07/05 08:44

投稿

soft_cream
soft_cream

スコア11

test CHANGED
File without changes
test CHANGED
@@ -90,6 +90,8 @@
90
90
 
91
91
  ```java
92
92
 
93
+ //最初の質問に関するプログラム
94
+
93
95
  import java.io.*;
94
96
 
95
97
  public class Matrix{
@@ -236,6 +238,8 @@
236
238
 
237
239
  ```java
238
240
 
241
+ //次の質問に関するプログラム
242
+
239
243
  import java.io.*;
240
244
 
241
245
  import java.io.FileInputStream;

1

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

2021/07/04 13:27

投稿

soft_cream
soft_cream

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,39 @@
1
+ ※最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。
2
+
3
+  続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。
4
+
5
+  修正後のプログラムには以下のようなエラーが表示されました。
6
+
7
+ ーーーーーーーーーーーーーーーーー
8
+
9
+ Matrix.java:39: エラー: シンボルを見つけられません
10
+
11
+ matrix.print();
12
+
13
+ ^
14
+
15
+ シンボル: メソッド print()
16
+
17
+ 場所: タイプdouble[][]の変数 matrix
18
+
19
+ Matrix.java:74: エラー: 不適合な型: Matrixをdouble[][]に変換できません:
20
+
21
+ A = y.read(args[0]);
22
+
23
+ ^
24
+
25
+ Matrix.java:76: エラー: 不適合な型: Matrixをdouble[][]に変換できません:
26
+
27
+ B = z.read(args[1]);
28
+
29
+ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
30
+
31
+
32
+
33
+ ※以下最初の質問の内容
34
+
35
+
36
+
1
37
  「テキストファイルから行列データを読み込み二次元配列に保存したものを表示する」プログラムを作成、
2
38
 
3
39
  コンパイルしたところ
@@ -195,3 +231,165 @@
195
231
  }
196
232
 
197
233
  ```
234
+
235
+
236
+
237
+ ```java
238
+
239
+ import java.io.*;
240
+
241
+ import java.io.FileInputStream;
242
+
243
+ import java.io.InputStreamReader;
244
+
245
+ public class Matrix{
246
+
247
+ private int row,col;
248
+
249
+ public Matrix(){
250
+
251
+ }
252
+
253
+ public Matrix(int M,int N){
254
+
255
+ this.row=M;
256
+
257
+ this.col=N;
258
+
259
+ }
260
+
261
+ private double[][] matrix = new double [row][col];
262
+
263
+ public int getRow(String filename){
264
+
265
+ BufferedReader br = new BufferedReader(new FileReader(filename));
266
+
267
+ String rline = br.readLine();
268
+
269
+ String[] R = rline.split("\s");
270
+
271
+ int m = Integer.parseInt(R[0]);
272
+
273
+ return m;
274
+
275
+ }
276
+
277
+ public int getColumn(String filename){
278
+
279
+ BufferedReader br = new BufferedReader(new FileReader(filename));
280
+
281
+ String cline = br.readLine();
282
+
283
+ String[] C = cline.split("\s");
284
+
285
+ int n = Integer.parseInt(C[1]);
286
+
287
+ return n;
288
+
289
+ }
290
+
291
+ public Matrix read(String filename){
292
+
293
+ try (BufferedReader br = new BufferedReader(new FileReader(filename))){
294
+
295
+ String[] rowcol = br.readLine().split(" ");
296
+
297
+ String line = null;
298
+
299
+ int M=0;
300
+
301
+ while (M < row && (line = br.readLine()) != null){
302
+
303
+ String[] record = line.split(" ");
304
+
305
+ for (int N = 0; N < col ; N++) {
306
+
307
+ matrix[M][N] = Double.parseDouble(record[N]);
308
+
309
+ }
310
+
311
+ M++;
312
+
313
+ }
314
+
315
+ matrix.print();
316
+
317
+ }
318
+
319
+ catch (FileNotFoundException e) {
320
+
321
+ e.printStackTrace();
322
+
323
+ }
324
+
325
+ catch (IOException e) {
326
+
327
+ e.printStackTrace();
328
+
329
+ }
330
+
331
+ catch (NumberFormatException e) {
332
+
333
+ e.printStackTrace();
334
+
335
+ }
336
+
337
+ }
338
+
339
+ public void print(){
340
+
341
+ for(int i = 0; i<row; i++){
342
+
343
+ for(int j = 0; j<col; j++){
344
+
345
+ System.out.println(matrix[i][j]);
346
+
347
+ }
348
+
349
+ }
350
+
351
+
352
+
353
+ }
354
+
355
+ public static void main(String[] args){
356
+
357
+ if (args.length != 2) {
358
+
359
+ System.out.println("need two files");
360
+
361
+ System.exit(1);
362
+
363
+ }
364
+
365
+ int arow,acol,brow,bcol;
366
+
367
+ Matrix x = new Matrix();
368
+
369
+ arow=x.getRow(args[0]);
370
+
371
+ acol=x.getColumn(args[0]);
372
+
373
+ brow=x.getRow(args[1]);
374
+
375
+ bcol=x.getColumn(args[1]);
376
+
377
+ double [ ][ ] A = new double [arow][acol];
378
+
379
+ double [ ][ ] B = new double [brow][bcol];
380
+
381
+ double [ ][ ] C = new double [acol][brow];
382
+
383
+ Matrix y = new Matrix(arow,acol);
384
+
385
+ A = y.read(args[0]);
386
+
387
+ Matrix z = new Matrix(brow,bcol);
388
+
389
+ B = z.read(args[1]);
390
+
391
+ }
392
+
393
+ }
394
+
395
+ ```