2014-01-07 57 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)' –

相關問題