0

プログラムは基本的に、ユーザーに BMR と性別を入力するように求めます。次に、活動レベルを選択するように求められます (間違ったものを選択した場合は、「有効な選択肢を入力してください」と印刷する必要があります)。女性と男性では活動因子が異なります。「変数 ActivityFactor を初期化する必要があります」というエラーが発生します。コードを修正するにはどうすればよいですか? ありがとう

        iBMR = new Scanner(System.in);
        Scanner iGender = new Scanner(System.in);
        Scanner iActivity = new Scanner(System.in);
        String AcFactor;
        double ActivityFactor ;
        double TDEE;
        //User Input
        System.out.println("Please enter your name: ");
        String inName = iName.next(); 
        System.out.println("Please enter your BMR: ");
        String inBMR = iBMR.next();
        double nBMR = Double.parseDouble(inBMR);
        System.out.println("Please enter your Gender");
        String inGender = iGender.next();

        System.out.println("Select Your Activity Level");
        System.out.println("[A] Resting (Sleeping,Reclining)");
        System.out.println("[B] Sedentary (Minimal Movement)");
        System.out.println("[C] Light (Sitting, Standing)");
        System.out.println("[D] Moderate (Light Manual Labor, Dancing, Riding Bike)");
        System.out.println("[E] Very Active (Team Sports, Hard Manual Labor)");
        System.out.println("[F] Extremely Active (Full-time Athlete, Heavy Manual Labor)");
        System.out.println("Enter the letter corrresponding to your activity level: ");
        String inActivity = iActivity.next();

        //CalculationFemale
        if(inActivity.equalsIgnoreCase("A")&& inGender.equalsIgnoreCase("F"))
        {
            ActivityFactor = 1.0;
        }
        else if(inActivity.equalsIgnoreCase("B")&& inGender.equalsIgnoreCase("F"))
        {
           ActivityFactor = 1.3;
        }
        else if(inActivity.equalsIgnoreCase("C")&& inGender.equalsIgnoreCase("F"))
        {
           ActivityFactor = 1.5;
        }
        else if(inActivity.equalsIgnoreCase("D")) && (inGender.equalsIgnoreCase("F"))
        {
           ActivityFactor = 1.6;
        }
        else if(inActivity.equalsIgnoreCase("E")&& inGender.equalsIgnoreCase("F"))
        {
           ActivityFactor = 1.9;
        }
        else if(inActivity.equalsIgnoreCase("F")&& inGender.equalsIgnoreCase("F"))
        {
           ActivityFactor = 2.2;
        }
        else
        {

            System.out.println("Please enter a valid choice!");
        }

        //CalculationMale
        if(inActivity.equalsIgnoreCase("A")&& inGender.equalsIgnoreCase("M"))
        {
            ActivityFactor = 1.0;
        }
        else if(inActivity.equalsIgnoreCase("B")&& inGender.equalsIgnoreCase("M"))
        {
           ActivityFactor = 1.3;
        }
        else if(inActivity.equalsIgnoreCase("C")&& inGender.equalsIgnoreCase("M"))
        {
           ActivityFactor = 1.6;
        }
        else if(inActivity.equalsIgnoreCase("D")&& inGender.equalsIgnoreCase("M"))
        {
           ActivityFactor = 1.7;
        }
        else if(inActivity.equalsIgnoreCase("E")&& inGender.equalsIgnoreCase("M"))
        {
           ActivityFactor = 2.1;
        }
        else if(inActivity.equalsIgnoreCase("F")&& inGender.equalsIgnoreCase("M"))
        {
           ActivityFactor = 2.4;
        }
        else
        {

           System.out.println("Please enter a valid choice!");
        }

        //TDEE
        double TD(ActivityFactor * BMR);

**すべての回答ありがとうございます。すべての if/if else 条件が満たされない場合、「else」は ActivityFactor の値を持たないことを認識しています。すべての返信のおかげで、これを追求する私の方法がうまくいかないことに気づきました。ユーザー名/性別/BMR を要求し、活動レベルを選択し、ユーザーが男性/女性であるかどうか、およびその選択に応じて活動係数を割り当てるように要求するようなプログラムをコーディングする方法の概要を教えてください。活動レベル?ありがとう

4

4 に答える 4

0

ActivityFactor をダミーの値に設定して、初期化されていることを確認する必要があります。

double ActivityFactor = -1;

それが役立つことを願っています!

于 2012-12-15T21:14:38.060 に答える
0

Java コンパイラは、初期化されていない可能性のある変数を使用していることを確認しました:

double TD(ActivityFactor * BMR);

これは、この変数を初期化したままにするコード パスがあるためです。

else
{

   System.out.println("Please enter a valid choice!");
}

したがって、2 つのオプションがあります。この変数を宣言する場所で初期化します。

 double ActivityFactor = 0.0;

または、この変数を使用する前に確実に初期化する必要があるように、すべてのコード パスを作成します。elseあなたの場合、次のブロックに init を追加する必要があることを意味します。

else
{
   ActivityFactor = 0.0;
   System.out.println("Please enter a valid choice!");
}

最初に行く選択肢をお勧めします。

于 2012-12-15T21:19:27.923 に答える
0

if-else ステートメントの前に値 ActivityFactor を指定する必要があります。「if」のいずれかが動作しない場合、java は ActivityFactor を認識できません。

double TD(ActivityFactor * BMR);

声明。

次のように宣言して初期化します。

double ActivityFactor = 0.0;
于 2012-12-15T21:19:50.043 に答える
0

ActivityFactor は使用前に初期化する必要があります。あなたのコードはそれを保証しません。最も簡単な方法は、宣言にデフォルト値を追加することです。

double ActivityFactor = 10.0; 
于 2012-12-15T21:20:00.210 に答える