解決済みの質問
こんにちは、質問があります。
下のプログラムを組みました。
コンパイルには成功しましたが、実行することができません。
import java.io.*;
public class Gyouretu {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in), 1);
try{
System.out.println("行列数を入力");
String line = reader.readLine();
int n = Integer.parseInt(line);
int a[][] = new int[n][n];
int b[][] = new int[n][n];
int c[][] = new int[n][n];
int i,j,k;
for ( i = 0; i < n; i++){
for ( j = 0; j < n; j++){
c[i][j]=0;
for ( k = 0; k < n; k++){
c[i][j] += a[i][k] * b[k][j];
System.out.print(c);
System.out.print(i);
System.out.print(j);
}
}
}
}catch (IOException e){
System.out.println("end");
}
}
}
行列の計算をするプログラムなのですが、コンパイル後に行列数(何行何列か?)を入力するとこんなエラーが出ます。
「'2' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
なぜなのか、どうしてもわかりません。
よろしくお願いします。
投稿日時 - 2003-02-12 10:54:46
C言語とか、やったことありますか?
Javaの配列は、ポインタ配列なんで、配列の中身を見るためには、各要素を指定しないと、ただのポインタが表示されるだけになります。
2次元配列だったら、こんな感じにしないと、要素の値を全部、表示できません。
int[][] hairetu = new int[10][10];
for(int i=0; i<hairetu.length; i++) {
for(int j=0; j<hairetu[0].length; j++) {
System.println("(" + i + "," + j + ")=" + hairetu[i][j]);
}
}
1次元配列だったら、java.util.ArraysのasListメソッドを使って、
配列をListオブジェクトに変換して、それをtoStringメソッドを使って、
文字列表現にする方法もあります。
まぁ、色々工夫して、頑張って下さい。
投稿日時 - 2003-02-13 11:37:04
お礼
ありがとうございます。いろいろなアドバイスや書籍を読んでみたところ、配列の仕組みがわかってきました。これからもがんばってみます!
投稿日時 - 2003-02-16 20:20:27
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(2件中 1~2件目)
System.out.print(c);
となっていますが、cは二次元配列の変数名ですよね?
って言うことは、配列の要素を指定しなければいけないんじゃないでしょうか?
//を使ってコメントアウトすることによって、どんな値が出力されるか見比べてみると良いかもしれませんよ。
投稿日時 - 2003-02-12 21:39:06
補足
配列の要素を指定する、ということはどういうことなのでしょうか?おっしゃる通りcは配列の変数名です。
このプログラムを実行すると、こんな出力がされてしまいます。
行列数を入力
2
[[I@1f3367500[[I@1f3367500[[I@1f3367501[[I@1f3367501[[I@1f3367510[[I@1f3367510[[I@1f3367511[[I@1f3367511
なぜこんな出力になるのか、どうもわかりません。
何かありましたらご指摘ください。
投稿日時 - 2003-02-12 23:35:16
OKWaveのオススメ
おすすめリンク