質問編集履歴
3
より詳細な質問を行うため
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つのプログラムの違いを追記しました
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
最初に質問した内容(上のプログラムについて)は回答していただいた方のおかげで解決しました。続けて質問させていただくために修正後のプログラムを最初のプログラムの下に追加させていただきました。修正
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
|
```
|