如何在If Else Statement Android中声明和初始化变量?

时间:2016-12-29 08:01:57

标签: 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 = 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);

7 个答案:

答案 0 :(得分:1)

尝试这样的事情

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

if (strAF.matches("OptionA"))

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

答案 1 :(得分:0)

在您的陈述之外声明fTdee AND 不要让他们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:使用更好的var名称

答案 2 :(得分:0)

尝试初始化上面的变量if 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);

答案 3 :(得分:0)

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

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

if (strAF.matches("OptionA"))

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

等等。

答案 4 :(得分:0)

变量fTdee仅在if语句中可见。可能此链接可能很有用http://www.java-made-easy.com/variable-scope.html

答案 5 :(得分:0)

在声明fTdee时声明intent对象,然后将fTdee值放在if-else语句中。     漂浮fAF;     漂浮fTdee;     String strAF = tvAF.getText()。toString();     Intent in2 = new Intent(getApplicationContext(),CaloriesPage.class);

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

PostScript:如果你看到上面的灵魂你正在写作     fTdee = bmr * fAF;     in2.putExtra( “mTdee”,fTdee); 在if-else块中一次又一次地是redendunt。所以为了避免这种情况你可以在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);

答案 6 :(得分:0)

在此代码中,您无法保证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);