- 締切済み
助けて下さい…
かなりピンチの学生です(>_<)この前質問したのですが禁止事項にひっかかったので削除ました↓↓プログラム途中マデ頑張ったのですがやっぱりわかりません。 名前、身長、体重をデータメンバとし、身長と体重のデータから肥満度を判定し、判定結果を文字列で返すhanteiからなるクラスManを作りなさい。 ・BMI=体重(kg)÷身長(m)の2乗 ・BMIとは やせ 20未満 正常 20以上24未満 やや肥満 24以上26.5未満 肥満 26.5以上 ヒントを参考に頑張ったのですが解りません…()で囲んだトコは自分で考えたのですがホトンド間違ってます。途中から進まないので教えて下さいpublic class Sokutei { public static void main(String[] args) { (Man[] m = new Man[5];) m[0] = new Man("Bill",1.89,69); m[1] = new Man("Lisa",1.70,87); m[2] = new Man("Alice",1.55,63); m[3] = new Man("Machilda",1.60,56); m[4] = new Man("Joe",1.75,55); for( int i = 0; i < m.length; i++){ ( System.out.println(m[i]+":"+ m[i].hantei());) } } } class Man{ private String name; private double height,weight; public Man(String a ,double b ,double c){ (name=a;) (heigth=b;) (weigth=c;) } public String hantei(){ ( double hantei = weigth / heigth / heigth;) ( if(hantei<20){) (System.out.println("やせ");) ( }) ( else if(20 <= hantei && hantei<24){) ( System.out.println("正常");) ( }) ( else if(24 <= hantei && hantei<26.5){) (System.out.println("やや肥満");) ( }) ( else{) (System.out.println("肥満");) ( }) } }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tachiwa
- ベストアンサー率34% (25/73)
前のお二人の指摘を参考に修正してまだ出来ないときはこのコードを試してください。 public class Sokutei { public static void main(String[] args) { Man[] m = new Man[5]; m[0] = new Man("Bill",1.89,69); m[1] = new Man("Lisa",1.70,87); m[2] = new Man("Alice",1.55,63); m[3] = new Man("Machilda",1.60,56); m[4] = new Man("Joe",1.75,55); for( int i = 0; i < m.length; i++){ System.out.println(m[i].getName() +":"+ m[i].hantei()); } } } class Man{ private String name; private double height, weight; public Man(String a ,double b ,double c){ name = a; height = b; weight = c; } public String getName(){ return name; } public String hantei(){ double hantei = weight/(height * height); if(hantei<20){ return "やせ"; } else if(20 <= hantei && hantei<24){ return "正常"; } else if(24 <= hantei && hantei<26.5){ return "やや肥満"; } else{ return "肥満"; } } }
- nimua
- ベストアンサー率21% (8/38)
学生さんなら、結構いいソースだと思いますよ。 問題点を列挙します。 ・変数名 Manクラス内の変数名がばらばらです。 ロジック云々以前の問題ですね。 この程度は修正してから、ソース提示してほしいところです。 ・System.out.println(m[i]+":"+ m[i].hantei()); 「m[i]」はManクラスのインスタンスをそのまま出力しようとしているだけです。 文字羅列が出力されていますよね。 欲しいのは、Manクラスの変数nameに格納されている値だと思います。 privateな変数ですので、アクセッサを作成しましょう。 例:public String getName() { return name; } 次に「m[i].hantei()」の部分ですが。 Man#hantei()はStringを戻り値とするように宣言されています。 しかし、return句が存在しませんね。 根本的にエラーです。 修正例:System.out.println("XXX"); → return "XXX";(Manクラス内の全部の箇 所) 上記作成した上で、出力部分を、 System.out.println(m[i].getName()+":"+ m[i].hantei()); で出力はされると思われます。 んー、キーワードとして、 ・インスタンス ・カプセル化 ・戻り値 の部分の理解が足りないので困っておられると推測します。 ここからはご質問内容とは関係ないのですが、 ソースを提示する際に、余計な「()」は見づらいだけだと思います。 また、コンパイルエラーはもう少し減らしてから出しましょう。 このレベルのソースを作ろうとされている質問者様でしたら、 ご自分で減らす事も可能だと思います^^
- mak22
- ベストアンサー率38% (15/39)
SokuteiクラスでnewしてManを呼び出していますが、これでは各値を設定しただけで、なにもアクションが帰ってきませんよね。せっかくhantei()メソッドを作ったのですから呼び出してあげてください。あと、hantei()メソッドに返り値Stringが設定されていますが、なにもreturnしていませんね。『判定結果を文字列で返す』のであれば、sysoutで出力しないでStringで返してあげましょう。 きっとコンパイル時にたくさんのエラーが出ていることと思います。エラーの意味をきちんと理解することが大切です。