• 締切済み

助けて下さい…

かなりピンチの学生です(>_<)この前質問したのですが禁止事項にひっかかったので削除ました↓↓プログラム途中マデ頑張ったのですがやっぱりわかりません。 名前、身長、体重をデータメンバとし、身長と体重のデータから肥満度を判定し、判定結果を文字列で返す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("肥満");) ( }) } }

みんなの回答

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.3

前のお二人の指摘を参考に修正してまだ出来ないときはこのコードを試してください。 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)
回答No.2

学生さんなら、結構いいソースだと思いますよ。 問題点を列挙します。 ・変数名  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)
回答No.1

SokuteiクラスでnewしてManを呼び出していますが、これでは各値を設定しただけで、なにもアクションが帰ってきませんよね。せっかくhantei()メソッドを作ったのですから呼び出してあげてください。あと、hantei()メソッドに返り値Stringが設定されていますが、なにもreturnしていませんね。『判定結果を文字列で返す』のであれば、sysoutで出力しないでStringで返してあげましょう。 きっとコンパイル時にたくさんのエラーが出ていることと思います。エラーの意味をきちんと理解することが大切です。

関連するQ&A