まず、先生の言ってることはあまり宜しくない。
身長も体重もstring型でいい、というのが納得いかない。
java
1public class HumanDto {
2 private String name;
3 private double weight;
4 pruvate double height;
5 // こんすとらくた、ゲッターズ飯田セッター省略
6}
こういう入れ物を用意する。これが、2次元配列の内側の配列と等価になる。
次に宣言と初期化
java
1HumanDto[] datas = new HumanDto[] {
2 new HumanDto("katou", 175.5, 63D),
3 new HumanDto("sakai", 195.2, 88D),
4 new HumanDto("edogawa", 160.3, 55.4)
5};
6
これで、宣言は、1次元配列だが、要素が複数オブジェクトを所有する2次元配列と等価になりました。
通常の2次元配列では、参照する場合、
xxx[2][0] などといみふめいな記号で指定するが、意味不明では無いが、プログラムが長くなると前に書いていた変数の内容を忘れがちで、今記述しようとしてるところと、宣言したところを行ったり来たりすることはよくある。
一方、2次元配列風にしたクラス配列の場合、xxx[1].getWeight() などと参照できる。[0] よりは、全然読みやすいし、xxx 配列は、何かのクラスを要素に持ってる、って3日後に見直しても分かります。
3日立てば、書いたこと全部忘れています。
あとは適当に、入門書見て自力で解決できるといいですね。
2次元配列の初期化について、
これも先生の問題があまり宜しくないのですが、縦に伸びる配列の縦の要素が可変で、2次元配列で実現するには適当な問題ではない、ということです。
何人分入力されても動くようにするためには、配列ではなくて、可変要素に対応したリストというクラスを使います。2次元配列で無理矢理実現することが目的ならせんせいに回答の見本を見せてもらった方がいいですね。可変という部分、幾つ入るかは不明という部分は、固定要素で宣言しないと利用できない配列で実現するのは初心者には無理だと思うね。
List<String[]> list = new ArrayList<>();
これに、System.in から取得した文字列を一次元配列に直して、詰めてあげ、
最後に、list.toArray() で二次元配列が取得できます。
お、見落としてた。3名分て書いてある。なら、
固定で持っちゃえばいいので、
String[][] datas = new String[3][3];
として、適当にやっちゃってください。
身長と体重は文字のまんまで良いなんて、、、、ってことは、つぎの問題は、身長、体重は double型に直してってなりそうですね。
となると、先生の教え方は正しいかも。