2014-01-07 2 views
0

-У меня встречается «Ошибка синтаксиса на токене« boolean », недопустимое выражение« Expression »в части if/else или нижеприведенном коде. Получаю эту ошибку 3 раза на всех строках «else/if».Ошибка синтаксиса в токене «boolean», недействительный Выражение

-Другая ошибка, которую я получаю, находится на последнем «еще», что мне нужно вставить «;» после заявления, которое ничего не решает.

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:

Edit- Ошибка только в последней строке еще осталось то

  • 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

Я поставил свой ответ ниже. Вы должны положить else, если в последнем. – Roland

+0

Я сказал chage, что вы больше всего любите от другого до другого, если. Я написал это в своем ответе ниже. – Roland

ответ

1

Если предположить, что ваш «YourBmi» имеет двойное значение, сделать это изменения:

Редакцией: Я изменил остальное, если код. Он должен иметь много скобок и добавить другой, если в последнем alse.

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) { ' ошибка: -The левая сторона присваивания должна быть переменной -Syntax ошибки, вставить«AssignmentOperator выражения»присваивание – user3116603

+0

Попробуйте очистить свой код. Project-> Clear-> Ваш проект. В моем коде работает. – Roland

5

следующие недействителен

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

изменить его

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

Я предполагаю, что YourBmi будет содержать число с плавающей в String форме

+0

это логическое преобразование в строку, которое я снова конвертирую в boolean для сравнения. – user3116603

+0

Как вы конвертируете логическое значение (true/false) с большим или равным 18.0? –

+0

Исправлена ​​ошибка на двух верхних строках. Только последняя строка дает ошибку: еще ((Float.parsefloat (YourBmi))> 25.0) – user3116603

2

boolean не класс, вы не можете вызывать методы (например, .valueOf) на нем. Отъезд Boolean; обратите внимание на капитал Б.

+1

Возможно, вы захотите перечитать его код –

+0

Я знаю, что он не хочет называть Boolean.valueOf; но один шаг за раз. Жалоба - это синтаксические ошибки, и полный ответ, который исправляет все ошибки, не собирается преподавать решение основной проблемы, которая объединяет примитивные типы и классы. Я рисую, как только он попадает в разные ошибки, мы обсудим их; имеет тенденцию оставлять более образованного читателя. – addaon

+0

он даже не скомпилируется после вашего изменения, из-за <= 18.0 с boolean –

1

У вас уже есть ответ, почему это не скомпилируется, но вы можете просто упростить свою жизнь, передав двойное прямо через свои намерения.

Если принять это значение из EditText, разобрать его, как дважды в первой деятельности и что позволит избежать вам сделать все эти вещи во второй деятельности:

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) и т.д.

+0

жаль, что это двойное значение не плавает с EditText. – user3116603

+0

@ user3116603 Затем используйте 'getDoubleExtra'. –

+0

@ user3116603 'else (Float.parseFloat (YourBmi)> 25.0)' избавиться от '(Float.parseFloat (YourBmi)> 25.0)' –

Смежные вопросы