Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 变量bmr可能尚未初始化_Java_Variables - Fatal编程技术网

Java 变量bmr可能尚未初始化

Java 变量bmr可能尚未初始化,java,variables,Java,Variables,我必须为我的在线课程编写这段代码来计算某人的基础代谢率。每次运行它时,我都会收到一个错误,表示变量bmr可能尚未初始化。但我确实在条件语句中初始化了它。我做错了什么?谢谢 bmr加倍;变为双倍bmr=0 您没有初始化局部变量 您的代码中还有一个错误。性别是一个字符串,您使用==比较字符串是错误的。你应该使用equals 使用 而不是 if("M".equals(gender)) 您可以使用: if ( gender == "M" ) 顺便说一句,您还应该使用: double bmr = 0.

我必须为我的在线课程编写这段代码来计算某人的基础代谢率。每次运行它时,我都会收到一个错误,表示变量bmr可能尚未初始化。但我确实在条件语句中初始化了它。我做错了什么?谢谢

bmr加倍;变为双倍bmr=0

您没有初始化局部变量

您的代码中还有一个错误。性别是一个字符串,您使用==比较字符串是错误的。你应该使用equals

使用

而不是

if("M".equals(gender))
您可以使用:

if ( gender == "M" )
顺便说一句,您还应该使用:

double bmr = 0.0;
而不是

"M".equals(gender) 
发生此错误的原因是,如果性别不是M或F,则在使用bmr时不会初始化它

局部变量和原语应在使用前初始化 因为你会知道从这些值中可以得到什么。历史上,, 创建新变量时,它将包含来自 记忆[人们无法预测其价值]。Java还需要 这是因为它可以防止孤立变量的存在

改变

也使用

而不是

if("M".equals(gender))

根据java语法规则,应该初始化方法局部变量。您尚未初始化局部变量。因此,改变:

if ( gender == "M" )


如果未初始化所有局部变量,则会发生此错误

在您的情况下,您必须进行以下更改:

double bmr = 0.0;

在所有情况下使用变量之前,必须先为变量设置一个值

在最后一个else中,bmr没有初始化,但是如果没有输入性别,您可能不想显示输出,因此,可以在else中添加return子句来避免它

double bmr = 0;
如果您想在这种情况下显示输出,您必须向bmt提供一个值:

    else {
        System.out.println("Please enter either M or F. I apologize for the gender binary.");
        return;
    }
当您在=符号的左侧使用bmr时,上面的代码非常正常,您可以在初始化后使用打印其值。必须在使用变量之前初始化它

double bmr;  //initialization is not necessary here if we use following way around

    if ( gender == "M" )
    { 
        bmr = (13.397 * weightKilo) + (4.799 * heightCm) - (5.677 * ageNum) + 88.362;
        System.out.println(bmr); //we are using bmr but after initialization in above line. So compiler doesn't complain.
    } 
但在下面的场景中,bmr在使用之前并没有被初始化

double bmr;  //initialization is not necessary here if we use following way around

    if ( gender == "M" )
    { 
        bmr = (13.397 * weightKilo) + (4.799 * heightCm) - (5.677 * ageNum) + 88.362;
        System.out.println(bmr); //we are using bmr but after initialization in above line. So compiler doesn't complain.
    } 
要更正它,请将bmr初始化为某个值

double bmr;

    if ( gender == "M" )
    { 
        System.out.println(bmr); //compiler complains here
    } 
现在,让我们检查代码片段中的错误代码

 double bmr=111;

        if ( gender == "M" )
        { 
            System.out.println(bmr);
        } 

您需要初始化bmr,如错误消息所示,您只声明了它;搜索错误:您将发现许多重复的错误。事实上,甚至不要搜索。看看相关的问题-最好现在就做,因为在创建问题时,这些建议显然被忽略了。当我输入double bmr=0,然后执行该程序时,它根本不计算bmr,它只是保持0。@user3094477查看我的其余答案。您的if条件不满足,因为您的代码在==和字符串中出现问题。使用ifM.equalsender;
    else {
        System.out.println("Please enter either M or F. I apologize for the gender binary.");
        return;
    }
    else {
        System.out.println("Please enter either M or F. I apologize for the gender binary.");
        bmr = 0;
    }
double bmr;  //initialization is not necessary here if we use following way around

    if ( gender == "M" )
    { 
        bmr = (13.397 * weightKilo) + (4.799 * heightCm) - (5.677 * ageNum) + 88.362;
        System.out.println(bmr); //we are using bmr but after initialization in above line. So compiler doesn't complain.
    } 
double bmr;

    if ( gender == "M" )
    { 
        System.out.println(bmr); //compiler complains here
    } 
 double bmr=111;

        if ( gender == "M" )
        { 
            System.out.println(bmr);
        } 
double bmr; 
System.out.println("Basal Metabolic Rate: " + bmr + " calories per day"); //you have written this line next after 13 to 14 lines of code after `bmr` declaration where compiler complains for initialization;