如何将变量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);
答案 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);