-1

最初の get メソッドは、BMI に応じて、体重不足、標準体重、過体重、肥満のいずれであるかを返す必要があります。

2番目のgetメソッドは、最初のgetメソッドと同じ変数「カテゴリ」を返すことを望んでいました(したがって、答えが何であれ、体重不足、通常の体重など)。呼び出し時に括弧にdoubleを入力する必要はありませんそれをメインメソッドで。

いくつかの背景として、私はメインで人物オブジェクトを作成し、それらに情報 (名前、身長、体重、BMI、カテゴリ) を与えてから、それらすべての人々を配列リストに入れました。それは私が呼んでいるものです。

「null」を返すカテゴリ以外のすべてを呼び出すことができます。私の 2 番目の get メソッドにはデータが割り当てられていないためだと思います。しかし、上記のgetメソッドから変数を返すように取得する方法、またはそれが適切な方法ではない場合、何か他のことを検討する必要があるかどうかについて、私は途方に暮れています。

どんな助けや提案も大歓迎です。意味がわからない場合や、さらにコードが必要な場合はお知らせください。

    public String getCategory(double bmi) {
    if (bmi < 18.5) {
        category = "UNDERWEIGHT";
    } else if ((bmi > 18.5) && (bmi < 25)) {
        category = "NORMAL WEIGHT";
    } else if ((bmi > 25) && (bmi < 30)) {
        category = "OVERWEIGHT";
    } else if (bmi > 30) {
        category = "OBESE";
    }

    return category;
}

public String getCategory() {
    return category;
}

main.. にある人物オブジェクト情報を含む配列リスト

            ArrayList<Person> allInfo = new ArrayList<Person>();
    {
        allInfo.add(andrewsInfo);
        allInfo.add(boydsInfo);
        allInfo.add(cathysInfo);
        allInfo.add(donnasInfo);
    }

それが機能するかどうかを確認するために、印刷しました...

    System.out.println(allInfo.get(0).getCategory());

「ヌル」が返されました

4

4 に答える 4

2

私が見ることができる2つの問題。

  1. あなたのif条件はBMI == 18.5または25または30を考慮していません

  2. オーバーロードされたメソッドがあります-String getCategory()おそらく return this.category、およびgetCategory(double bmi)あなたが示したものです。

最初のバリアントを呼び出していますが、これは実際には必要ありません。値に基づいて動的に計算されるため、フィールドとして保存する必要はありませんcategory(初期化されていない場合は null になり、それが印刷されます) bmi

代わりに、BMI をクラスのdouble値として保存する必要Personがあります (まだ行っていない場合)。その後、Person クラスを (大まかに) そのように定義できます。

public class Person {

    private double bmi;

    public void setBmi(double bmi) {
        this.bmi = bmi;
    }

    public String getCategory() {
        if (bmi >= 30) {
            return "OBESE";
        } else if (bmi >= 25) {
            return "OVERWEIGHT";
        } else if (bmi >= 18.5) {
            return "NORMAL";
        } else {
            return "UNDERWEIGHT";
        }
    }
}

個人を作成する

Person cricket_007 = new Person();
cricket_007.setBmi(20); // Maybe this is right? :)

印刷する

System.out.println(cricket_007.getCategory()); // NORMAL
于 2016-02-10T02:53:24.393 に答える
-2

代わりに、コードでこのスニペットを使用してください

public String getCategory()
   {
       return category;
   }

変更されたコード--->

public String getCategory() {
this(bmi);
}
于 2016-02-10T02:51:01.467 に答える