2014-01-07 52 views
0

-I正遇到“令牌上的语法错误”布尔值“无效的表达式”if/else部分中的错误或下面的代码。在所有“其他/如果”行上得到这个错误3次。令牌“布尔值”上的语法错误,无效表达式

- 我得到的另一个错误是在最后一个“其他”,我必须插入一个“;”在没有解决任何问题的声明之后。

package com.dey2929.bmihealth; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.widget.TextView; 

public class ResultActivity extends Activity { 
TextView result; 
TextView review; 
    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_result); 
    result = (TextView) findViewById(R.id.tvmybmi); 
    review = (TextView) findViewById(R.id.review); 
    Intent intent = getIntent(); 
    String YourBmi = intent.getStringExtra("YourBmi"); 
    result.setText(" Your BMI is: " + YourBmi); 
     if (boolean.valueof(YourBmi) <= 18.0) 
     { 
      review.setText("You are Underweight "); 

     } 
     else if ((boolean.valueof(YourBmi) > 18.0 && boolean.valueof(YourBmi) < 25.0)) 
     { 
      review.setText("You are Normal (healthy weight) "); 
     } 
     else ((boolean.valueof(YourBmi)) > 25.0) 
     { 
      review.setText("You are Overweight"); 
     } 


} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.result, menu); 
    return true; 
} 
@Override 
protected void onPause() { 
    super.onPause(); 
    finish(); 
} 

} 

UPDATE:

编辑 - 错误仅在最后别的行保留即

  • The left-hand side of an assignment must be a variable -Syntax error, insert ";" to complete Statement
    • Insert assignment operator expression to complete assignment.

修改后的代码:

package com.dey2929.bmihealth; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.widget.TextView; 

public class ResultActivity extends Activity { 
TextView result; 
TextView review; 
    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_result); 
    result = (TextView) findViewById(R.id.tvmybmi); 
    review = (TextView) findViewById(R.id.review); 
    Intent intent = getIntent(); 
    String YourBmi = intent.getStringExtra("YourBmi"); 
    result.setText(" Your BMI is: " + YourBmi); 
     if (Float.parseFloat(YourBmi) <= 18.0) 
     { 
      review.setText("You are Underweight "); 

     } 
     else if ((Float.parseFloat(YourBmi) > 18.0 && Float.parseFloat(YourBmi) < 25.0)) 
     { 
      review.setText("You are Normal (healthy weight) "); 
     } 
     else (Float.parseFloat(YourBmi) > 25.0) 
     { 
      review.setText("You are Overweight"); 
     } 


} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.result, menu); 
    return true; 
} 
@Override 
protected void onPause() { 
    super.onPause(); 
    finish(); 
} 

} 
+1

'boolean.valueof(YourBmi)'那是什么?可能你正在寻找'Double.valueOf(bmi)<= 18.0' –

+0

我把我的答案吼叫。如果在最后的其他地方,你必须放弃。 – Roland

+0

我说chage你最后其他否则从别人到其他如果。我在我的答案中写下了它。 – Roland

回答

1

假设你的“YourBmi”具有双重价值,使这一变化:

编辑:我换了别人,如果代码。它必须多加括号,并且如果在最后一次添加另一个。

if (Double.valueOf(YourBmi) <= 18.0) 
    { 
     review.setText("You are Underweight "); 

    } 
    else if (Double.valueOf(YourBmi) > 18.0 && Double.valueOf(YourBmi) < 25.0) 
    { 
     review.setText("You are Normal (healthy weight) "); 
    } 
    else if(Double.valueOf(YourBmi) > 25.0) 
    { 
     review.setText("You are Overweight"); 
    } 
+0

错误,当我尝试这是行'else if Double.valueOf(YourBmi)> 25.0) {' 错误: - 作业的左侧必须是变量 - 语法错误,请插入“AssignmentOperator表达式”以完成作业 – user3116603

+0

尝试清除代码。项目 - >清除 - >您的项目。在我的代码中工作。 – Roland

5

以下是无效

if (boolean.valueof(YourBmi) <= 18.0) 

将其更改为

if (Float.parseFloat(YourBmi) <= 18.0) 

我认为YourBmi将包含在String形式

+0

它是一个布尔转换为字符串,我再次转换为布尔值进行比较。 – user3116603

+0

你如何转换布尔(真/假)大于或等于18.0数字? –

+0

解决上述两行错误。 只有最后一行发生错误: else((Float.parsefloat(YourBmi))> 25。0) – user3116603

2

boolean浮点数是不是一类,你不能在它调用方法(如.valueOf)。退房Boolean;注意是大写B.

+1

你可能想重读他的代码 –

+0

我知道他不想要调用Boolean.valueOf;但一次只能一步。抱怨是语法错误,并且修复所有错误的完整答案不会教导基本问题的解决方案,这是基本类型和类的混合。我想,一旦他遇到了不同的错误,我们将讨论这些错误;倾向于留下更受教育的读者。 – addaon

+0

在更改之后它甚至不会编译,因为<= 18.0,布尔值为 –

1

你已经有答案了,为什么这个不能编译,但你可以简单地让你的生活更简单通过将直接双通过你的意图。

如果从EditText借此值,解析它作为一个双重的第一个活动,这将避免你做这一切的东西在第二个活动:

Intent i = new Intent(firstActivity.this, ResultActivity.class); 
i.putExtra("doubleValue", 17.0); 
startActivity(i); 

然后就去做:

double d = getIntent().getDoubleExtra("doubleValue", 0.0); 

这将避免你的Stringfloat,将简化您的比较分析,以一个简单的if(d <= 16.0)

+0

对不起,它是一个不是从EditText浮动的double值。 – user3116603

+0

@ user3116603然后使用'getDoubleExtra'。 –

+0

@ user3116603'else(Float.parseFloat(YourBmi)> 25.0)'摆脱'(Float.parseFloat(YourBmi)> 25.0)' –

相关问题