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