首页 > 解决方案 > 通过 if 语句后值不会改变

问题描述

该程序应该在考虑您的性别、BMR 和活动水平后计算您的 TDEE,但如果活动水平无法通过,它就无法计算它,我觉得这与我的 if 语句有关,但我真的不知道怎么办。

性别和级别的值类型曾经是char,但是我的老师告诉我将其更改为String,但它仍然不起作用。

import java.util.Scanner;
public class TDEE_2
{
    public static void main(String [ ] args)
    {
        Scanner in = new Scanner(System.in);
        double activityFactor = 0.0;

        System.out.println("Please enter your name: ");
        String firstName = in.next();
        String lastName = in.nextLine();
        String name = firstName + lastName;

        System.out.println("Please enter your BMR: ");
        double bmr = in.nextDouble();

        System.out.println("Please enter your gender (M/F): ");
        String gender = in.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, Stading)");
        System.out.println("[D] Moderate (Light Manual Labor, Dacing, Riding Bike)");
        System.out.println("[E] Very Active (Team Sports, Hard Manual Labor)\n");

        System.out.println("Enter the letter corresponding to your activity level: ");
        String level = in.next();

        if(gender == "M" && level == "A")
            activityFactor = 1.0;
        else if(gender == "M" && level == "B")
            activityFactor = 1.3;
        else if(gender == "M" && level == "C")
            activityFactor = 1.6;
        else if(gender == "M" && level == "D")
            activityFactor = 1.7;
        else if(gender == "M" && level == "E")
            activityFactor = 2.1;
        else if(gender == "M" && level == "F")
            activityFactor = 2.4;
        else if(gender == "F" && level == "A")
            activityFactor = 1.0;
        else if(gender == "F" && level == "B")
            activityFactor = 1.3;
        else if(gender == "F" && level == "C")
            activityFactor = 1.5;
        else if(gender == "F" && level == "D")
            activityFactor = 1.6;
        else if(gender == "F" && level == "E")
            activityFactor = 1.9;
        else if(gender == "F" && level == "F")
            activityFactor = 2.2;
        else
            System.out.println("Sorry, you entered an invalid letter.");


        double tdee = bmr * activityFactor;
        System.out.println("Your results:");
        System.out.println("Name: " + name + "\t\t Gender: " + gender);
        System.out.println("BMR: " + bmr + " calories \t\t Activity Factor: " + activityFactor);
        System.out.print("TDEE: " + tdee + " calories");
    }       
}

当我运行它时,活动级别和 TDEE 显示为空,但它们应该具有值。

我是java新手,不知道该怎么办

标签: javaif-statement

解决方案


推荐阅读