- ベストアンサー
これは試験にでるといわれたのでどなたおしえてもらえませんか
このソースファイル(Ex2DTest.java)は2次元の参照型配列を用いるプログラムである。3×3の2次元の参照型配列を用いることができるように完成しなさい class SamData{ int x,y,z; void print(){ System.out.println(x+y+z); } } class Ex2DTest{ public static void main (String[] args){ //配列の宣言とインスタンス化 for(int i=0; i<array2d.length;i++){ for(int i=0;i<array2d[i].length;i++){ array2d[i][j].x=i*j; array2d[i][j].y=i+j; array2d[i][j].z=i-j; array2d[i][j].print(); } } } } 分かる方いらっしゃれば是非教えてください! よろしくおねがいします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、 一応、以下のようにすると、コンパイルと実行は出来ますが。 class SamData{ int x,y,z; void print(){ System.out.println(x+y+z); } } public class Ex2DTest { public static void main(String[] args) { SamData[][] array2d = new SamData[3][3]; for (int i = 0; i < array2d.length; ++i) { for (int j = 0; j < array2d[0].length; ++j) { array2d[i][j] = new SamData(); array2d[i][j].x = i * j; array2d[i][j].y = i + j; array2d[i][j].z = i - j; array2d[i][j].print(); } } } } 一応自分なりに、入力実行させて理解してください。 もともと出題コードにも間違いが これって、写し間違い??? それとも、もともとの問題の間違い。??? >for(int i=0; i<array2d.length;i++){ >for(int i=0;i<array2d[i].length;i++){ iを二度使っている。 配列は、array2d[0]にしたほうがいいです。
その他の回答 (3)
- tom11
- ベストアンサー率53% (134/251)
追伸 >for (int j = 0; j < array2d[i].length; ++j) { でも、間違いにはならないと思います。 array2d[0]の方が私的には、いいと思うのですが、 出題者の考え方や問題の出し方により、 array2d[i]の方が正解になる可能性もあります。
- kakuritsu
- ベストアンサー率23% (62/261)
>分かる方いらっしゃれば是非教えてください! 教えてください…ではなくて、やってくださいでしょうか? >int x,y,z; これを外部からアクセスできるように変更してください。 変数のスコープを考慮すれば、宣言方法を修正しないとならないことがわかるでしょう。 >//配列の宣言とインスタンス化 文字通り、配列の宣言とインスタンス化を行ってください。 array2d という変数を宣言しないとならない事ぐらい わかりますよね? >array2d[i][j].x=i*j; こんな感じで2次元で使われているのだから 2次元で宣言してやればOKです。
お礼
kakuritsuさん 参考になりましたのでありがとうございます. 下のように >int x,y,z; これを外部からアクセスできるように変更してください。 これは int x,y,z; をどう宣言を変えればいいのでしょうか >//配列の宣言とインスタンス化 文字通り、配列の宣言とインスタンス化を行ってください。 int [ ][ ] array2d; array2d = new int[3][3]; 以上の2箇所修正すればおkなんでしょうか よろしくおねがいします.
- aigaion
- ベストアンサー率47% (287/608)
問題だけを書いて,自分がどこまで考えたかを全く書かずに解いてください というのは,ここでは「丸投げ」と言われていて禁止事項になります. せめて,ここまでは考えたがここから先がわからないということを書いてください. ちなみに,それがそのファイルに書いてあるソースコードの全てだとすれば 「コンパイルエラがでて実行不可能なので何も表示されない.」が答えです. 書いてある内容の意図を汲めばもう少し違う内容になるかもしれませんが・・・
お礼
tom11さん 教えてくださってありがとうございます. 家ではコンパイルできる環境がないので明日学校に行って実行してみます. もうちょっと理解してみます.本当にありがとうございます。