- 我遇到"令牌上的语法错误" boolean",无效的表达式" if / else部分或下面的代码中的错误。我在所有" else / if"上得到这个错误3次线。
- 我得到的另一个错误是在最后一个"否则"我必须插入&#34 ;;"在没有解决任何问题的陈述之后。
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();
}
}
更新:
编辑 - 仅在最后一个其他行中出现错误,即
- 作业的左侧必须是变量 - 语法错误,插入&#34;;&#34;完成声明
- 插入赋值运算符表达式以完成赋值。
修改后的代码:
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();
}
}
答案 0 :(得分:5)
以下无效
if (boolean.valueof(YourBmi) <= 18.0)
将其更改为
if (Float.parseFloat(YourBmi) <= 18.0)
我认为YourBmi
将包含String
格式
答案 1 :(得分:2)
boolean
不是一个类,你不能在其上调用方法(如.valueOf
)。查看Boolean
;请注意首都B。
答案 2 :(得分: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");
}
答案 3 :(得分:1)
你已经有了一个答案,为什么这不能编译,但你可以直接通过你的意图传递一个双重简化你的生活。
如果从EditText
获取此值,请在第一个活动中将其解析为double,这将避免您在第二个活动中完成所有这些操作:
Intent i = new Intent(firstActivity.this, ResultActivity.class);
i.putExtra("doubleValue", 17.0);
startActivity(i);
然后就这样做:
double d = getIntent().getDoubleExtra("doubleValue", 0.0);
这将避免您将String
解析为float
,并简化您与简单if(d <= 16.0)
等的比较。