Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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/0/jpa/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 如何在If-Else语句中声明和初始化变量?_Java_Android - Fatal编程技术网

Java 如何在If-Else语句中声明和初始化变量?

Java 如何在If-Else语句中声明和初始化变量?,java,android,Java,Android,如何将变量fTdee传递到另一个活动中?我似乎有一个问题,因为fTdee是在If-Else语句中声明的,但我认为我实际上没有从If-Else语句外部访问这个变量fTdee final float fAF; float fTdee; String strAF = tvAF.getText().toString(); if (strAF.matches("OptionA")) { fAF = 1.20f; fTdee = b

如何将变量fTdee传递到另一个活动中?我似乎有一个问题,因为fTdee是在If-Else语句中声明的,但我认为我实际上没有从If-Else语句外部访问这个变量fTdee

    final float fAF;
    float fTdee;
    String strAF = tvAF.getText().toString();

    if (strAF.matches("OptionA"))

    {
        fAF = 1.20f;
        fTdee = bmr*fAF;
    }
    else if (strAF.matches("OptionB"))
    {
        fAF = 1.375f;
        fTdee = bmr*fAF;
    }
    else if (strAF.matches("OptionC"))
    {
        fAF = 1.55f;
        fTdee = bmr*fAF;
    }
    else if (strAF.matches("OptionD"))
    {
        fAF = 1.725f;
        fTdee = bmr*fAF;
    }
    else if (strAF.matches("OptionE"))
    {
        fAF = 1.90f;
        fTdee = bmr*fAF;
    }

            Intent in2 = new Intent(getApplicationContext(),  CaloriesPage.class);
            in2.putExtra("mTdee",fTdee);
            startActivity(in2);

试试这样的

float fAF;
float fTdee;
String strAF = tvAF.getText().toString();

if (strAF.matches("OptionA"))

{
    fAF = 1.20f;
    fTdee = bmr*fAF;
}

在您的声明之外声明
fTdee
不要将它们设置为
final
这意味着您无法在实例化后修改它们

float fAF = 0.0f;
String strAF = tvAF.getText().toString();

if (strAF.matches("OptionA")){
    fAF = 1.20f;
}else if (strAF.matches("OptionB")){
    fAF = 1.375f;
}else if (strAF.matches("OptionC")){
    fAF = 1.55f;
}else if (strAF.matches("OptionD")){
    fAF = 1.725f;
}else if (strAF.matches("OptionE")){
    fAF = 1.90f;
}

final float fTdee = bmr*fAF;

Intent in2 = new Intent(getApplicationContext(),  CaloriesPage.class);
in2.putExtra("mTdee",fTdee);
startActivity(in2);

Protip:使用更好的变量名

尝试初始化上面的变量if else块,如下所示

 final float fAF;
String strAF = tvAF.getText().toString();
 float fTdee = 0.0;
if (strAF.matches("OptionA"))

{
    fAF = 1.20f;
    fTdee = bmr*fAF;
}
else if (strAF.matches("OptionB"))
{
    fAF = 1.375f;
     fTdee = bmr*fAF;
}
else if (strAF.matches("OptionC"))
{
    fAF = 1.55f;
     fTdee = bmr*fAF;
}
else if (strAF.matches("OptionD"))
{
    fAF = 1.725f;
     fTdee = bmr*fAF;
}
else if (strAF.matches("OptionE"))
{
    fAF = 1.90f;
      fTdee = bmr*fAF;
}

        Intent in2 = new Intent(getApplicationContext(),  CaloriesPage.class);
        in2.putExtra("mTdee",fTdee);
        startActivity(in2);

你在做编程,兄弟。如果你看到一些多余的东西,你必须意识到它可以被减少。您已经在每个if范围中声明了fTdee,这对于好的编程来说是一个非常糟糕的方法。相反,如注释中所述,声明一个活动级别范围变量(将其初始化为默认值),并随时设置其值(即在if-else语句中)


依此类推。

变量fTdee仅在if语句中可见。可能此链接很有用

在声明fTdee时声明意图对象,然后将fTdee值放入if-else语句中。 浮动fAF; 浮动fTdee; 字符串strAF=tvAF.getText().toString(); Intent in2=新的Intent(getApplicationContext(),CaloriesPage.class)

附言:如果你看到上面的句子,你就是在写作 fTdee=bmr*fAF; in2.putExtra(“mTdee”,fTdee); 在重新导出的if-else块中反复出现。所以为了避免这种情况,你可以在if-else块之外声明fTdee,并可以做类似的事情

float fAF=1.0f;
float fTdee;
String strAF = tvAF.getText().toString();
if (strAF.matches("OptionA")){
 fAF = 1.20f;  
}else if (strAF.matches("OptionB")){
 fAF = 1.375f;  
}else if (strAF.matches("OptionC")){
 fAF = 1.55f;   
}else if (strAF.matches("OptionD")){
 fAF = 1.725f;   
}else if (strAF.matches("OptionE")){
 fAF = 1.90f;   
}
Intent in2 = new Intent(getApplicationContext(),  CaloriesPage.class);
fTdee = bmr*fAF;
in2.putExtra("mTdee",fTdee);
startActivity(in2);

在此代码中,当您使用它时,您不能保证
fTdee
已初始化。您可以在
if else
语句树的末尾添加else语句

    final float fAF;
    String strAF = tvAF.getText().toString();
    float fTdee = 0.0;
    if (strAF.matches("OptionA")) {
        fAF = 1.20f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionB")) {
        fAF = 1.375f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionC")) {
        fAF = 1.55f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionD")) {
        fAF = 1.725f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionE")) {
        fAF = 1.90f;
        fTdee = bmr * fAF;
    } else {
        fTdee = 0f; //some default value
        //or throw IllegalStateException if it is not possible for execution of your code
        //throw new IllegalStateException(); 
    }


    Intent in2 = new Intent(getApplicationContext(), CaloriesPage.class);
    in2.putExtra("mTdee", fTdee);
    startActivity(in2);

在if-else范围之外设置全局变量declare fTdee。我还建议用开关盒替换if else spagetti。它超出范围。只要在if语句之前声明它,您就可以了。是的,当你把它放在额外的范围内时,你是在范围外访问它。我已经声明fTdee在if-else范围之外。但我似乎无法将此传递给另一个意图为PutExtra的活动,因为他们要求我将变量声明为final,这对我来说没有意义,因为fTdee随不同的if-else条件而变化,并删除
final
关键字如果我得到提示,说fTdee是从内部访问的,你该怎么办类并需要声明为final?您在其他地方从何处访问它?实际上,如果需要,您仍然可以使用您的
fTdee
final
。我会更新我的答案。我想我现在更接近了。然而,我又遇到了类似的问题。这次我得到的变量“fAF”可能还没有初始化谢谢你的帮助!你让我在另一张照片上看到了这一点!
float fAF=1.0f;
float fTdee;
String strAF = tvAF.getText().toString();
if (strAF.matches("OptionA")){
 fAF = 1.20f;  
}else if (strAF.matches("OptionB")){
 fAF = 1.375f;  
}else if (strAF.matches("OptionC")){
 fAF = 1.55f;   
}else if (strAF.matches("OptionD")){
 fAF = 1.725f;   
}else if (strAF.matches("OptionE")){
 fAF = 1.90f;   
}
Intent in2 = new Intent(getApplicationContext(),  CaloriesPage.class);
fTdee = bmr*fAF;
in2.putExtra("mTdee",fTdee);
startActivity(in2);
    final float fAF;
    String strAF = tvAF.getText().toString();
    float fTdee = 0.0;
    if (strAF.matches("OptionA")) {
        fAF = 1.20f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionB")) {
        fAF = 1.375f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionC")) {
        fAF = 1.55f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionD")) {
        fAF = 1.725f;
        fTdee = bmr * fAF;
    } else if (strAF.matches("OptionE")) {
        fAF = 1.90f;
        fTdee = bmr * fAF;
    } else {
        fTdee = 0f; //some default value
        //or throw IllegalStateException if it is not possible for execution of your code
        //throw new IllegalStateException(); 
    }


    Intent in2 = new Intent(getApplicationContext(), CaloriesPage.class);
    in2.putExtra("mTdee", fTdee);
    startActivity(in2);