質問: 2010;** ** // データのロード self.loadData( "CloudCover1.dat" ); **System.out.printf( "平均 %s 値:\t%.2f\n", month, self.getAve( month ) ); System.out.printf( "最大値 %s 値:\t%.2f\n", month, self.getMax( month ) ); System.out.printf( "最小値 %s 値:\t%.2f\n", month, self.getMin( month ) ); System.out.println( );** **System.out.printf( "平均 %d 値:\t%.2f\n", year, self.getAve( year ) ); System.out.printf( "最大値 %d 値:\t%.2f\n", year, self.getMax( year ) ); System.out.printf( "最小値 %d 値:\t%.2f\n", year, self.getMin( year ) ); System.out.println( );** **System.out.printf( "全体平均:\t%.2f\n", self.getAve( ) ); System.out.printf( "全体最大値:\t%.2f\n", self.getMax( ) ); System.out.printf( "全体最小値:\t%.2f\n", self.getMin( ) ); System.out.println( );** **System.out.printf( "平均面積:\t%,.2f\n", self.coverageToArea( self.getAve( ) ) ); System.out.println( );;** **System.out.printf( "開始年\t%d\n", self.beginYear( ) ); System.out.printf( "終了年\t%d\n", self.endYear( ) ); System.out.println( );** } } ### お恥ずかしい話ですがかなりの初心者でセンスもないため授業にもついていけず、先生に質問したのですが見放されてしまいました。 ショックと恥ずかしさででほかの人にも聞けなくなってしまったので、こちらで質問させていただきます。 ほぼゼロに近いコードなのは招致しておりますが、お力添えをいただけるととてもうれしいです...。 せめて2次元配列でも動かしたいのですが、配列の表示ができていないので、思っているように動いているかどうかもわかりません。 似たようなサンプルコードや、ウェブサイトなど、わずかでもヒントになるような情報があれば十分ありがたいです。 ### 補足情報(言語/FW/ツール等のバージョンなど) java, Eclipse
回答: 動的2次元配列を管理する機能(クラス)を作り、湖上にかかる雲の面積データを 集計するプログラムを作成せよ。 雲の面積データは、入力ファイルとして与えるものとする。 という課題に対して、プログラムを書いてはみたが動かない。 これは一体何がおかしいのだろうか? というご質問であるという前提で、ざっと見ておかしいと感じる部分を 指摘させていただきます。 完全な回答ではないですが、ご参考になれば。 Dynamic2dArray.grow() tmpにarrayをコピーしたあと、arrayを置換えていない。 (せっかく育てたtmpが捨てられている) Dynamic2dArray.get() array[raw][column]を返すはずが、arrayを返している。 Dynamic2dArray.put() データを追加していない。 (growだけで終わっている) Dynamic2dArray.Dynamic2dArray() arrayを初期化していない。 (最低限、与えられたサイズに対応するArrayが生成されるはず) CloudCover.getAve(Month month) 求められているのはおそらく 「指定された月における、全ての年の湖上における雲の面積データの平均値」 であるが、何を計算しているのだろうか。 CloudCover.getAve(int year) 求められているのはおそらく 「指定された年における、全ての月の湖上における雲の面積データの平均値」 であるが、何を計算しているのだろうか。 CloudCover.getMax(Month month) CloudCover.getMax(int year) CloudCover.getMax() CloudCover.getMin(Month month) CloudCover.getMin(int year) CloudCover.getMax() CloudCover.coverageToArea(double coverage) CloudCover.beginYear() CloudCover.endYear() 上に同じ。 この関数(メソッド)に求められている内容と、プログラムがアンマッチしている。 今後の課題へのアプローチの手順ですが、まずは課題の意図を正確に理解する ことが必要かと思います。 「仕様の不明点を確認する」のような言い回しをしますが、つまるところ、 プログラムを書く前に、作るべきものを正しく理解してください。 課題の中でご自身が「意味がわからん」と思っている箇所があるかと思います。 この箇所を明確にできるよう、先生に質問をしてみるのが良いかとおもいます。